Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 27cd1fc3 authored by Dmitry Kasatkin's avatar Dmitry Kasatkin Committed by Mimi Zohar
Browse files

ima: fix fallback to use new_sync_read()



3.16 commit aad4f8bb
'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: default avatarDmitry Kasatkin <d.kasatkin@samsung.com>
Signed-off-by: default avatarMimi Zohar <zohar@linux.vnet.ibm.com>
Cc: <stable@vger.kernel.org>  3.16+
parent 23c19e2c
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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;
}