| From 27cd1fc3ae5374a4a86662c67033f15ef27b2461 Mon Sep 17 00:00:00 2001 |
| From: Dmitry Kasatkin <d.kasatkin@samsung.com> |
| Date: Mon, 23 Jun 2014 20:32:56 +0300 |
| Subject: ima: fix fallback to use new_sync_read() |
| |
| From: Dmitry Kasatkin <d.kasatkin@samsung.com> |
| |
| 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 | 8 ++++---- |
| 1 file changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/security/integrity/ima/ima_crypto.c |
| +++ b/security/integrity/ima/ima_crypto.c |
| @@ -80,19 +80,19 @@ static int ima_kernel_read(struct file * |
| { |
| 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; |
| } |