Commit 3e84f48edfd33b2e209a117c11fb9ce637cc9b67

Authored by Al Viro
Committed by Linus Torvalds
1 parent de55eb1d60

vfs/splice: Fix missed checks in new __kernel_write() helper

Commit 06ae43f34bcc ("Don't bother with redoing rw_verify_area() from
default_file_splice_from()") lost the checks to test existence of the
write/aio_write methods.  My apologies ;-/

Eventually, we want that in fs/splice.c side of things (no point
repeating it for every buffer, after all), but for now this is the
obvious minimal fix.

Reported-by: Dave Jones <davej@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 3 additions and 0 deletions Side-by-side Diff

... ... @@ -424,6 +424,9 @@
424 424 const char __user *p;
425 425 ssize_t ret;
426 426  
  427 + if (!file->f_op || (!file->f_op->write && !file->f_op->aio_write))
  428 + return -EINVAL;
  429 +
427 430 old_fs = get_fs();
428 431 set_fs(get_ds());
429 432 p = (__force const char __user *)buf;