Thread (13 messages) 13 messages, 7 authors, 2021-10-22

Re: [PATCH 01/67] mm: Stop filemap_read() from grabbing a superfluous page

From: Matthew Wilcox <willy@infradead.org>
Date: 2021-10-19 18:30:04
Also in: ceph-devel, linux-cifs, linux-fsdevel, linux-nfs, lkml

On Mon, Oct 18, 2021 at 03:50:32PM +0100, David Howells wrote:
quoted hunk ↗ jump to hunk
@@ -2625,6 +2625,10 @@ ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *iter,
 		if ((iocb->ki_flags & IOCB_WAITQ) && already_read)
 			iocb->ki_flags |= IOCB_NOWAIT;
 
+		isize = i_size_read(inode);
+		if (unlikely(iocb->ki_pos >= isize))
+			goto put_pages;
+
Is there a good reason to assign to isize here?  I'd rather not,
because it complicates analysis, and a later change might look at
the isize read here, not realising it was a racy use.  So I'd
rather see:

		if (unlikely(iocb->ki_pos >= i_size_read(inode)))
			goto put_pages;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help