]> git.baikalelectronics.ru Git - kernel.git/commitdiff
lib/test_bitmap: test the tail after bitmap_to_arr64()
authorAlexander Lobakin <alexandr.lobakin@intel.com>
Mon, 11 Jul 2022 18:09:30 +0000 (20:09 +0200)
committerYury Norov <yury.norov@gmail.com>
Tue, 12 Jul 2022 15:00:50 +0000 (08:00 -0700)
Currently, test_bitmap_arr64() only tests bitmap_to_arr64()'s sanity
by comparing the result of double-conversion (bm -> arr64 -> bm2)
with the input bitmap. However, this may be not enough when one side
hides bugs of the second one (e.g. tail clearing, which is being
performed by both).
Expand the tests and check the tail of the actual arr64 used as
a temporary buffer for double-converting.

Signed-off-by: Alexander Lobakin <alexandr.lobakin@intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Yury Norov <yury.norov@gmail.com>
lib/test_bitmap.c

index 25967cfa4ab2d7224a14609953332477cc427144..98754ff9fe686fab28c6e5c6d2e62cf218b6ea27 100644 (file)
@@ -604,6 +604,12 @@ static void __init test_bitmap_arr64(void)
                        pr_err("bitmap_copy_arr64(nbits == %d:"
                                " tail is not safely cleared: %d\n", nbits, next_bit);
 
+               if ((nbits % 64) &&
+                   (arr[(nbits - 1) / 64] & ~GENMASK_ULL((nbits - 1) % 64, 0)))
+                       pr_err("bitmap_to_arr64(nbits == %d): tail is not safely cleared: 0x%016llx (must be 0x%016llx)\n",
+                              nbits, arr[(nbits - 1) / 64],
+                              GENMASK_ULL((nbits - 1) % 64, 0));
+
                if (nbits < EXP1_IN_BITS - 64)
                        expect_eq_uint(arr[DIV_ROUND_UP(nbits, 64)], 0xa5a5a5a5);
        }