[PATCH] fs: Restore previously removed f_op checks.

From: Tim Gardner
Date: Fri Jun 25 2010 - 15:53:55 EST

BugLink: http://bugs.launchpad.net/bugs/588861

commit cc56f7de7f00d188c7c4da1e9861581853b9e92f removed
a check for output file f_op and f_op->sendpage. This appears
to have caused a regression in the ability of Java
to read and decrypt files. This would be simpler if
there was an easy reproducer, but so far the only way I've
been able to get it to fail is within the Maverick
UEC environment.

Signed-off-by: Tim Gardner <tim.gardner@xxxxxxxxxxxxx>
fs/read_write.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/fs/read_write.c b/fs/read_write.c
index 9c04852..3203ca1 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -845,6 +845,8 @@ static ssize_t do_sendfile(int out_fd, int in_fd, loff_t *ppos,
if (!(out_file->f_mode & FMODE_WRITE))
goto fput_out;
retval = -EINVAL;
+ if (!out_file->f_op || !out_file->f_op->sendpage)
+ goto fput_out;
in_inode = in_file->f_path.dentry->d_inode;
out_inode = out_file->f_path.dentry->d_inode;
retval = rw_verify_area(WRITE, out_file, &out_file->f_pos, count);

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/