Skip to content

Commit

Permalink
badblocks: Fix a nonsense WARN_ON() which checks whether a u64 variab…
Browse files Browse the repository at this point in the history
…le < 0

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>
  • Loading branch information
Coly Li authored and Jens Axboe committed Mar 10, 2025
1 parent fc0e982 commit 7e76336
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions block/badblocks.c
Original file line number Diff line number Diff line change
Expand Up @@ -1242,14 +1242,15 @@ static int _badblocks_check(struct badblocks *bb, sector_t s, sector_t sectors,
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)
Expand Down

0 comments on commit 7e76336

Please sign in to comment.