Skip to content

Commit 8e36ab6

Browse files
tobluxgregkh
authored andcommitted
btrfs: scrub: replace max_t()/min_t() with clamp() in scrub_throttle_dev_io()
[ Upstream commit a7f3dfb8293c4cee99743132d69863a92e8f4875 ] Replace max_t() followed by min_t() with a single clamp(). As was pointed by David Laight in https://lore.kernel.org/linux-btrfs/20250906122458.75dfc8f0@pumpkin/ the calculation may overflow u32 when the input value is too large, so clamp_t() is not used. In practice the expected values are in range of megabytes to gigabytes (throughput limit) so the bug would not happen. Signed-off-by: Thorsten Blum <[email protected]> Reviewed-by: David Sterba <[email protected]> [ Use clamp() and add explanation. ] Signed-off-by: David Sterba <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 9c50fde commit 8e36ab6

1 file changed

Lines changed: 1 addition & 2 deletions

File tree

fs/btrfs/scrub.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,8 +1369,7 @@ static void scrub_throttle_dev_io(struct scrub_ctx *sctx, struct btrfs_device *d
13691369
* Slice is divided into intervals when the IO is submitted, adjust by
13701370
* bwlimit and maximum of 64 intervals.
13711371
*/
1372-
div = max_t(u32, 1, (u32)(bwlimit / (16 * 1024 * 1024)));
1373-
div = min_t(u32, 64, div);
1372+
div = clamp(bwlimit / (16 * 1024 * 1024), 1, 64);
13741373

13751374
/* Start new epoch, set deadline */
13761375
now = ktime_get();

0 commit comments

Comments
 (0)