diff --git a/fs/read_write.c b/fs/read_write.c index f7b5a23b804b0955c72309a98dcd3dd088fd5bb4..e6ddc8dceb96fc48a8fbe379799d0efed52d2b4a 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -424,6 +424,9 @@ ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t const char __user *p; ssize_t ret; + if (!file->f_op || (!file->f_op->write && !file->f_op->aio_write)) + return -EINVAL; + old_fs = get_fs(); set_fs(get_ds()); p = (__force const char __user *)buf;