]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
badblocks: fix the using of MAX_BADBLOCKS
authorLi Nan <linan122@huawei.com>
Thu, 27 Feb 2025 07:55:01 +0000 (15:55 +0800)
committerJens Axboe <axboe@kernel.dk>
Thu, 6 Mar 2025 15:03:28 +0000 (08:03 -0700)
The number of badblocks cannot exceed MAX_BADBLOCKS, but it should be
allowed to equal MAX_BADBLOCKS.

Fixes: aa511ff8218b ("badblocks: switch to the improved badblock handling code")
Fixes: c3c6a86e9efc ("badblocks: add helper routines for badblock ranges handling")
Signed-off-by: Li Nan <linan122@huawei.com>
Reviewed-by: Zhu Yanjun <yanjun.zhu@linux.dev>
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Acked-by: Coly Li <colyli@kernel.org>
Link: https://lore.kernel.org/r/20250227075507.151331-7-zhengqixing@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/badblocks.c

index 88f27d4f385631c36e2b76974a8fddeb9cf11d25..43430bd3efa7d11383f1d65443c7c77cb9b6fecf 100644 (file)
@@ -700,7 +700,7 @@ static bool can_front_overwrite(struct badblocks *bb, int prev,
                        *extra = 2;
        }
 
-       if ((bb->count + (*extra)) >= MAX_BADBLOCKS)
+       if ((bb->count + (*extra)) > MAX_BADBLOCKS)
                return false;
 
        return true;
@@ -1135,7 +1135,7 @@ re_clear:
                if ((BB_OFFSET(p[prev]) < bad.start) &&
                    (BB_END(p[prev]) > (bad.start + bad.len))) {
                        /* Splitting */
-                       if ((bb->count + 1) < MAX_BADBLOCKS) {
+                       if ((bb->count + 1) <= MAX_BADBLOCKS) {
                                len = front_splitting_clear(bb, prev, &bad);
                                bb->count += 1;
                                cleared++;