mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02: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:
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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user