]> git.hungrycats.org Git - linux/commitdiff
ima: fix fallback to use new_sync_read()
authorDmitry Kasatkin <d.kasatkin@samsung.com>
Mon, 23 Jun 2014 17:32:56 +0000 (20:32 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Oct 2014 16:43:15 +0000 (09:43 -0700)
commit 27cd1fc3ae5374a4a86662c67033f15ef27b2461 upstream.

3.16 commit aad4f8bb42af06371aa0e85bf0cd9d52c0494985
'switch simple generic_file_aio_read() users to ->read_iter()'
replaced ->aio_read with ->read_iter in most of the file systems
and introduced new_sync_read() as a replacement for do_sync_read().

Most of file systems set '->read' and ima_kernel_read is not affected.
When ->read is not set, this patch adopts fallback call changes from the
vfs_read.

Signed-off-by: Dmitry Kasatkin <d.kasatkin@samsung.com>
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
security/integrity/ima/ima_crypto.c

index 0bd732843fe70861b0d1bb58bceada6c972f8122..f7aac3cf19aecc3c7aaa47f3bdb295f120ffb1b3 100644 (file)
@@ -80,19 +80,19 @@ static int ima_kernel_read(struct file *file, loff_t offset,
 {
        mm_segment_t old_fs;
        char __user *buf = addr;
-       ssize_t ret;
+       ssize_t ret = -EINVAL;
 
        if (!(file->f_mode & FMODE_READ))
                return -EBADF;
-       if (!file->f_op->read && !file->f_op->aio_read)
-               return -EINVAL;
 
        old_fs = get_fs();
        set_fs(get_ds());
        if (file->f_op->read)
                ret = file->f_op->read(file, buf, count, &offset);
-       else
+       else if (file->f_op->aio_read)
                ret = do_sync_read(file, buf, count, &offset);
+       else if (file->f_op->read_iter)
+               ret = new_sync_read(file, buf, count, &offset);
        set_fs(old_fs);
        return ret;
 }