On Thu 05-06-25 13:49:35, Chi Zhiling wrote: > From: Chi Zhiling <chizhiling@xxxxxxxxxx> > > max_scan in page_cache_next_miss always decreases to zero when no hole > is found, causing the return value to be index + 0. > > Fix this by preserving the max_scan value throughout the loop. > > Fixes: 901a269ff3d5 ("filemap: fix page_cache_next_miss() when no hole found") > Signed-off-by: Chi Zhiling <chizhiling@xxxxxxxxxx> Indeed. Thanks for catching this. Don't know how I missed that. Feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > mm/filemap.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/filemap.c b/mm/filemap.c > index b5e784f34d98..148be65be1cd 100644 > --- a/mm/filemap.c > +++ b/mm/filemap.c > @@ -1767,8 +1767,9 @@ pgoff_t page_cache_next_miss(struct address_space *mapping, > pgoff_t index, unsigned long max_scan) > { > XA_STATE(xas, &mapping->i_pages, index); > + unsigned long nr = max_scan; > > - while (max_scan--) { > + while (nr--) { > void *entry = xas_next(&xas); > if (!entry || xa_is_value(entry)) > return xas.xa_index; > -- > 2.43.0 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR