aboutsummaryrefslogtreecommitdiff
path: root/fs/aio.c
diff options
context:
space:
mode:
authorBrian Wood <brian.j.wood@intel.com>2017-02-27 16:58:40 -0800
committerBrian Wood <brian.j.wood@intel.com>2017-02-28 15:35:14 -0800
commitb7147432cf0d58533bd21fe594d0be1d153f91a6 (patch)
treeaec042cd9c91432c09285381c5d5af85072975c9 /fs/aio.c
parentce7cfcfa1251122880d34fae7259309b64a78434 (diff)
parentec55e7c2bf49a426b6f8204505bd267c77554d37 (diff)
downloadedison-v3.10-n-iot-preview-4.tar.gz
Merge remote-tracking branch 'remotes/origin/brillo/linux-3.10.y' into Brillo-20170221-3.10_kernelandroid-n-iot-preview-4n-iot-preview-4
Conflicts: crypto/blkcipher.c drivers/platform/x86/intel_scu_ipcutil.c drivers/usb/gadget/u_ether.c fs/ext4/extents.c net/bluetooth/sco.c net/wireless/scan.c Change-Id: Iaea6d22acb3da6b0477d71cf546858d35295e3d2
Diffstat (limited to 'fs/aio.c')
-rw-r--r--fs/aio.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/aio.c b/fs/aio.c
index ded94c4fa30..9798d4edfd8 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -977,12 +977,17 @@ static ssize_t aio_setup_vectored_rw(int rw, struct kiocb *kiocb, bool compat)
static ssize_t aio_setup_single_vector(int rw, struct kiocb *kiocb)
{
- if (unlikely(!access_ok(!rw, kiocb->ki_buf, kiocb->ki_nbytes)))
- return -EFAULT;
+ size_t len = kiocb->ki_nbytes;
+
+ if (len > MAX_RW_COUNT)
+ len = MAX_RW_COUNT;
+
+ if (unlikely(!access_ok(!rw, kiocb->ki_buf, len)))
+ return -EFAULT;
kiocb->ki_iovec = &kiocb->ki_inline_vec;
kiocb->ki_iovec->iov_base = kiocb->ki_buf;
- kiocb->ki_iovec->iov_len = kiocb->ki_nbytes;
+ kiocb->ki_iovec->iov_len = len;
kiocb->ki_nr_segs = 1;
return 0;
}