Fwd: [PATCH] badblocks: Fix a nonsense WARN_ON() which checks whether a u64 variable < 0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jens,

Could you please take a look at it and pick this patch into the for-6.15/block branch? The patch is generated based on the for-6.15/block branch.

Thanks in advance.

Coly Li


> From: Coly Li <colyli@xxxxxxxxxx>
> 
> 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@xxxxxxxxxx>
> Signed-off-by: Coly Li <colyli@xxxxxxxxxx>
> ---
> block/badblocks.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/block/badblocks.c b/block/badblocks.c
> index 673ef068423a..ece64e76fe8f 100644
> --- a/block/badblocks.c
> +++ b/block/badblocks.c
> @@ -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)
> -- 
> 2.47.2
> 






[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux