On Fri, Sep 13, 2024 at 07:21:54PM +0100, Matthew Wilcox wrote: > On Fri, Sep 13, 2024 at 01:57:04PM -0400, trondmy@xxxxxxxxxx wrote: > > If the caller supplies an iocb->ki_pos value that is close to the > > filesystem upper limit, and an iterator with a count that causes us to > > overflow that limit, then filemap_read() enters an infinite loop. > > Are we guaranteed that ki_pos lies in the range [0..s_maxbytes)? > I'm not too familiar with the upper paths of the VFS and what guarantees > we can depend on. If we are guaranteed that, could somebody document > it (and indeed create kernel-doc for struct kiocb)? filemap_read() checks this itself before doing anything else: if (unlikely(iocb->ki_pos >= inode->i_sb->s_maxbytes)) return 0; i.e. there is no guarantee provided by the upper layers, it's first checked right here in any buffered read path... -Dave. -- Dave Chinner david@xxxxxxxxxxxxx