diff options
| author | Vishal Moola (Oracle) <[email protected]> | 2025-04-03 23:54:17 +0000 |
|---|---|---|
| committer | Andrew Morton <[email protected]> | 2025-04-12 00:32:40 +0000 |
| commit | 8ab1b16023961dc640023b10436d282f905835ad (patch) | |
| tree | ddb2ec2f6be6aa93e2b743f97780a4bf8b3c841d /drivers/usb/cdns3/cdns3-ti.c | |
| parent | mm/hugetlb: add a line break at the end of the format string (diff) | |
| download | kernel-8ab1b16023961dc640023b10436d282f905835ad.tar.gz kernel-8ab1b16023961dc640023b10436d282f905835ad.zip | |
mm: fix filemap_get_folios_contig returning batches of identical folios
filemap_get_folios_contig() is supposed to return distinct folios found
within [start, end]. Large folios in the Xarray become multi-index
entries. xas_next() can iterate through the sub-indexes before finding a
sibling entry and breaking out of the loop.
This can result in a returned folio_batch containing an indeterminate
number of duplicate folios, which forces the callers to skeptically handle
the returned batch. This is inefficient and incurs a large maintenance
overhead.
We can fix this by calling xas_advance() after we have successfully adding
a folio to the batch to ensure our Xarray is positioned such that it will
correctly find the next folio - similar to filemap_get_read_batch().
Link: https://lkml.kernel.org/r/Z-8s1-kiIDkzgRbc@fedora
Fixes: 35b471467f88 ("filemap: add filemap_get_folios_contig()")
Signed-off-by: Vishal Moola (Oracle) <[email protected]>
Reported-by: Qu Wenruo <[email protected]>
Closes: https://lkml.kernel.org/r/[email protected]
Tested-by: Qu Wenruo <[email protected]>
Cc: Matthew Wilcox (Oracle) <[email protected]>
Cc: Vivek Kasireddy <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'drivers/usb/cdns3/cdns3-ti.c')
0 files changed, 0 insertions, 0 deletions
