On Sat, Jun 14, 2025 at 3:54 AM Brian Foster <bfoster@xxxxxxxxxx> wrote: > > On Fri, Jun 13, 2025 at 05:01:14PM -0700, Joanne Koong wrote: > > This fixes a bug in commit 63c69ad3d18a ("fuse: refactor > > fuse_fill_write_pages()") where max_pages << PAGE_SHIFT is mistakenly > > used as the calculation for the max_pages upper limit but there's the > > possibility that copy_folio_from_iter_atomic() may copy over bytes > > from the iov_iter that are less than the full length of the folio, > > which would lead to exceeding max_pages. > > > > This commit fixes it by adding a 'ap->num_folios < max_folios' check. > > > > Signed-off-by: Joanne Koong <joannelkoong@xxxxxxxxx> > > Fixes: 63c69ad3d18a ("fuse: refactor fuse_fill_write_pages()") > > Reported-by: Brian Foster <bfoster@xxxxxxxxxx> > > Closes: https://lore.kernel.org/linux-fsdevel/aEq4haEQScwHIWK6@bfoster/ > > --- > > This resolves the problem for me as well. Thanks again.. > > Tested-by: Brian Foster <bfoster@xxxxxxxxxx> > > > fs/fuse/file.c | 5 ++--- > > 1 file changed, 2 insertions(+), 3 deletions(-) > > > > diff --git a/fs/fuse/file.c b/fs/fuse/file.c > > index 3d0b33be3824..a05a589dc701 100644 > > --- a/fs/fuse/file.c > > +++ b/fs/fuse/file.c > > @@ -1147,7 +1147,7 @@ static ssize_t fuse_send_write_pages(struct fuse_io_args *ia, > > static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia, > > struct address_space *mapping, > > struct iov_iter *ii, loff_t pos, > > - unsigned int max_pages) > > + unsigned int max_folios) > > { > > struct fuse_args_pages *ap = &ia->ap; > > struct fuse_conn *fc = get_fuse_conn(mapping->host); > > @@ -1157,12 +1157,11 @@ static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia, > > int err = 0; > > > > num = min(iov_iter_count(ii), fc->max_write); > > - num = min(num, max_pages << PAGE_SHIFT); > > > > ap->args.in_pages = true; > > ap->descs[0].offset = offset; > > > > - while (num) { > > + while (num && ap->num_folios < max_folios) { > > size_t tmp; > > struct folio *folio; > > pgoff_t index = pos >> PAGE_SHIFT; > > -- > > 2.47.1 > > > Miklos or Christian, could this fix be added to the next release candidate? Thanks, Joanne