]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
badblocks: Fix a nonsense WARN_ON() which checks whether a u64 variable < 0
authorColy Li <colyli@kernel.org>
Sun, 9 Mar 2025 16:05:56 +0000 (12:05 -0400)
committerJens Axboe <axboe@kernel.dk>
Mon, 10 Mar 2025 13:41:58 +0000 (07:41 -0600)
In _badblocks_check(), there are lines of code like this,
1246         sectors -= len;
[snipped]
1251         WARN_ON(sectors < 0);

The WARN_ON() at line 1257 doesn't make sense because sectors is
unsigned long long type and never to be <0.

Fix it by checking directly checking whether sectors is less than len.

Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Coly Li <colyli@kernel.org>
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20250309160556.42854-1-colyli@kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/badblocks.c

index 673ef068423a66cd1367c37514747a78ded9e6ce..ece64e76fe8fff4653729c0d3adc2a72aad05b0e 100644 (file)
@@ -1242,14 +1242,15 @@ re_check:
        len = sectors;
 
 update_sectors:
+       /* This situation should never happen */
+       WARN_ON(sectors < len);
+
        s += len;
        sectors -= len;
 
        if (sectors > 0)
                goto re_check;
 
-       WARN_ON(sectors < 0);
-
        if (unacked_badblocks > 0)
                rv = -1;
        else if (acked_badblocks > 0)