mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-21 19:35:23 -04:00
btrfs: scrub: replace max_t()/min_t() with clamp() in scrub_throttle_dev_io()
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 <thorsten.blum@linux.dev> Reviewed-by: David Sterba <dsterba@suse.com> [ Use clamp() and add explanation. ] Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
committed by
David Sterba
parent
17dc82dc1e
commit
a7f3dfb829
@@ -1369,8 +1369,7 @@ static void scrub_throttle_dev_io(struct scrub_ctx *sctx, struct btrfs_device *d
|
||||
* Slice is divided into intervals when the IO is submitted, adjust by
|
||||
* bwlimit and maximum of 64 intervals.
|
||||
*/
|
||||
div = max_t(u32, 1, (u32)(bwlimit / (16 * 1024 * 1024)));
|
||||
div = min_t(u32, 64, div);
|
||||
div = clamp(bwlimit / (16 * 1024 * 1024), 1, 64);
|
||||
|
||||
/* Start new epoch, set deadline */
|
||||
now = ktime_get();
|
||||
|
||||
Reference in New Issue
Block a user