mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
xfs: make the calculation generic in xfs_sb_validate_fsb_count()
Instead of assuming that PAGE_SHIFT is always higher than the blocklog, make the calculation generic so that page cache count can be calculated correctly for LBS. Signed-off-by: Pankaj Raghav <p.raghav@samsung.com> Link: https://lore.kernel.org/r/20240822135018.1931258-10-kernel@pankajraghav.com Acked-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Daniel Gomez <da.gomez@samsung.com> Reviewed-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
79012cfa00
commit
cebf9dacd5
|
|
@ -132,11 +132,16 @@ xfs_sb_validate_fsb_count(
|
|||
xfs_sb_t *sbp,
|
||||
uint64_t nblocks)
|
||||
{
|
||||
uint64_t max_bytes;
|
||||
|
||||
ASSERT(PAGE_SHIFT >= sbp->sb_blocklog);
|
||||
ASSERT(sbp->sb_blocklog >= BBSHIFT);
|
||||
|
||||
if (check_shl_overflow(nblocks, sbp->sb_blocklog, &max_bytes))
|
||||
return -EFBIG;
|
||||
|
||||
/* Limited by ULONG_MAX of page cache index */
|
||||
if (nblocks >> (PAGE_SHIFT - sbp->sb_blocklog) > ULONG_MAX)
|
||||
if (max_bytes >> PAGE_SHIFT > ULONG_MAX)
|
||||
return -EFBIG;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user