mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 02:17:36 -04:00
xfs: fix exchmaps reservation limit check
xfs_exchmaps_estimate_overhead() adds the bmbt and rmapbt
overhead to a local resblks variable, but the final UINT_MAX
check still tests req->resblks. That is the reservation value
from before the overhead was added.
The computed value is stored back in req->resblks and later passed
to xfs_trans_alloc(), whose block reservation argument is unsigned
int. Check the computed reservation so the existing limit applies
to the value that will be used.
Fixes: 966ceafc7a ("xfs: create deferred log items for file mapping exchanges")
Cc: stable@vger.kernel.org # v6.10
Signed-off-by: Yingjie Gao <gaoyingjie@uniontech.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
committed by
Carlos Maiolino
parent
610c08cbe7
commit
0a5213bbff
@@ -711,7 +711,7 @@ xfs_exchmaps_estimate_overhead(
|
||||
return -ENOSPC;
|
||||
|
||||
/* Can't actually reserve more than UINT_MAX blocks. */
|
||||
if (req->resblks > UINT_MAX)
|
||||
if (resblks > UINT_MAX)
|
||||
return -ENOSPC;
|
||||
|
||||
req->resblks = resblks;
|
||||
|
||||
Reference in New Issue
Block a user