From: Trond Myklebust Date: Fri, 13 Sep 2024 20:04:18 +0000 (-0400) Subject: filemap: filemap_read() should check that the offset is positive or zero X-Git-Tag: v6.13-rc1~229^2~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9d926f10b7ff4300a5dc36ecc52d061911d027d8;p=thirdparty%2Fkernel%2Flinux.git filemap: filemap_read() should check that the offset is positive or zero We do check that the read offset is less than the filesystem limit, however for good measure we should also check that it is positive or zero, and return EINVAL if that is not the case. Signed-off-by: Trond Myklebust Link: https://lore.kernel.org/r/482ee0b8a30b62324adb9f7c551a99926f037393.1726257832.git.trond.myklebust@hammerspace.com Signed-off-by: Christian Brauner --- diff --git a/mm/filemap.c b/mm/filemap.c index 36d22968be9a1..82aa94d2b709b 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2620,6 +2620,8 @@ ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *iter, loff_t isize, end_offset; loff_t last_pos = ra->prev_pos; + if (unlikely(iocb->ki_pos < 0)) + return -EINVAL; if (unlikely(iocb->ki_pos >= inode->i_sb->s_maxbytes)) return 0; if (unlikely(!iov_iter_count(iter)))