On Sat, Jul 01, 2023 at 01:04:37PM +0530, Ritesh Harjani (IBM) wrote: > folio_next_index() returns an unsigned long value which left shifted > by PAGE_SHIFT could possibly cause an overflow on 32-bit system. Instead > use folio_pos(folio) + folio_size(folio), which does this correctly. > > Suggested-by: Matthew Wilcox <willy@xxxxxxxxxxxxx> > Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@xxxxxxxxx> Fixes: f43dc4dc3eff ("iomap: buffered write failure should not truncate the page cache") With that added, Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> --D > --- > fs/iomap/buffered-io.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c > index e45368e91eca..cddf01b96d8a 100644 > --- a/fs/iomap/buffered-io.c > +++ b/fs/iomap/buffered-io.c > @@ -933,7 +933,7 @@ static int iomap_write_delalloc_scan(struct inode *inode, > * the end of this data range, not the end of the folio. > */ > *punch_start_byte = min_t(loff_t, end_byte, > - folio_next_index(folio) << PAGE_SHIFT); > + folio_pos(folio) + folio_size(folio)); > } > > /* move offset to start of next folio in range */ > -- > 2.40.1 >