]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bitmap: Add test for out-of-boundary modifications for scatter & gather
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 26 Feb 2026 11:16:44 +0000 (12:16 +0100)
committerYury Norov <ynorov@nvidia.com>
Mon, 23 Mar 2026 17:33:51 +0000 (13:33 -0400)
Make sure that bitmap_scatter() and bitmap_gather() do not modify
the bits outside of the given nbits span.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Yury Norov <ynorov@nvidia.com>
lib/test_bitmap.c

index c83829ef557f58029f5693035076e97aa2314018..2952a6147e81c4dd07c8f4f4103e3e3923d6f322 100644 (file)
@@ -354,18 +354,22 @@ static void __init test_replace(void)
 
 static const unsigned long sg_mask[] __initconst = {
        BITMAP_FROM_U64(0x000000000000035aULL),
+       BITMAP_FROM_U64(0x0000000000000000ULL),
 };
 
 static const unsigned long sg_src[] __initconst = {
        BITMAP_FROM_U64(0x0000000000000667ULL),
+       BITMAP_FROM_U64(0x0000000000000000ULL),
 };
 
 static const unsigned long sg_gather_exp[] __initconst = {
        BITMAP_FROM_U64(0x0000000000000029ULL),
+       BITMAP_FROM_U64(0x0000000000000000ULL),
 };
 
 static const unsigned long sg_scatter_exp[] __initconst = {
        BITMAP_FROM_U64(0x000000000000021aULL),
+       BITMAP_FROM_U64(0x0000000000000000ULL),
 };
 
 static void __init test_bitmap_sg(void)
@@ -379,18 +383,18 @@ static void __init test_bitmap_sg(void)
        /* Simple gather call */
        bitmap_zero(bmap_gather, 100);
        bitmap_gather(bmap_gather, sg_src, sg_mask, nbits);
-       expect_eq_bitmap(sg_gather_exp, bmap_gather, nbits);
+       expect_eq_bitmap(sg_gather_exp, bmap_gather, 100);
 
        /* Simple scatter call */
        bitmap_zero(bmap_scatter, 100);
        bitmap_scatter(bmap_scatter, sg_src, sg_mask, nbits);
-       expect_eq_bitmap(sg_scatter_exp, bmap_scatter, nbits);
+       expect_eq_bitmap(sg_scatter_exp, bmap_scatter, 100);
 
        /* Scatter/gather relationship */
        bitmap_zero(bmap_tmp, 100);
        bitmap_gather(bmap_tmp, bmap_scatter, sg_mask, nbits);
        bitmap_scatter(bmap_res, bmap_tmp, sg_mask, nbits);
-       expect_eq_bitmap(bmap_scatter, bmap_res, nbits);
+       expect_eq_bitmap(bmap_scatter, bmap_res, 100);
 }
 
 #define PARSE_TIME     0x1