The following commit has been merged into the core/rcu branch of tip:

Commit-ID:     97330db3af9a41302d1ccb0f495fcb5b5da2cc44
Gitweb:        
https://git.kernel.org/tip/97330db3af9a41302d1ccb0f495fcb5b5da2cc44
Author:        Paul Gortmaker <[email protected]>
AuthorDate:    Sun, 21 Feb 2021 03:08:22 -05:00
Committer:     Paul E. McKenney <[email protected]>
CommitterDate: Mon, 08 Mar 2021 14:16:58 -08:00

lib: test_bitmap: add more start-end:offset/len tests

There are inputs to bitmap_parselist() that would probably never
be entered manually by a person, but might result from some kind of
automated input generator.  Things like ranges of length 1, or group
lengths longer than nbits, overlaps, or offsets of zero.

Adding these tests serve two purposes:

1) document what might seem odd but nonetheless valid input.

2) don't regress from what we currently accept as valid.

Cc: Yury Norov <[email protected]>
Cc: Rasmus Villemoes <[email protected]>
Cc: Andy Shevchenko <[email protected]>
Acked-by: Yury Norov <[email protected]>
Reviewed-by: Andy Shevchenko <[email protected]>
Signed-off-by: Paul Gortmaker <[email protected]>
Signed-off-by: Paul E. McKenney <[email protected]>
---
 lib/test_bitmap.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/lib/test_bitmap.c b/lib/test_bitmap.c
index 0f2e91d..3c1c46d 100644
--- a/lib/test_bitmap.c
+++ b/lib/test_bitmap.c
@@ -34,6 +34,8 @@ static const unsigned long exp1[] __initconst = {
        BITMAP_FROM_U64(0x3333333311111111ULL),
        BITMAP_FROM_U64(0xffffffff77777777ULL),
        BITMAP_FROM_U64(0),
+       BITMAP_FROM_U64(0x00008000),
+       BITMAP_FROM_U64(0x80000000),
 };
 
 static const unsigned long exp2[] __initconst = {
@@ -334,6 +336,26 @@ static const struct test_bitmap_parselist 
parselist_tests[] __initconst = {
        {0, " ,  ,,  , ,   ",           &exp1[12 * step], 8, 0},
        {0, " ,  ,,  , ,   \n",         &exp1[12 * step], 8, 0},
 
+       {0, "0-0",                      &exp1[0], 32, 0},
+       {0, "1-1",                      &exp1[1 * step], 32, 0},
+       {0, "15-15",                    &exp1[13 * step], 32, 0},
+       {0, "31-31",                    &exp1[14 * step], 32, 0},
+
+       {0, "0-0:0/1",                  &exp1[12 * step], 32, 0},
+       {0, "0-0:1/1",                  &exp1[0], 32, 0},
+       {0, "0-0:1/31",                 &exp1[0], 32, 0},
+       {0, "0-0:31/31",                &exp1[0], 32, 0},
+       {0, "1-1:1/1",                  &exp1[1 * step], 32, 0},
+       {0, "0-15:16/31",               &exp1[2 * step], 32, 0},
+       {0, "15-15:1/2",                &exp1[13 * step], 32, 0},
+       {0, "15-15:31/31",              &exp1[13 * step], 32, 0},
+       {0, "15-31:1/31",               &exp1[13 * step], 32, 0},
+       {0, "16-31:16/31",              &exp1[3 * step], 32, 0},
+       {0, "31-31:31/31",              &exp1[14 * step], 32, 0},
+
+       {0, "0-31:1/3,1-31:1/3,2-31:1/3",       &exp1[8 * step], 32, 0},
+       {0, "1-10:8/12,8-31:24/29,0-31:0/3",    &exp1[9 * step], 32, 0},
+
        {-EINVAL, "-1", NULL, 8, 0},
        {-EINVAL, "-0", NULL, 8, 0},
        {-EINVAL, "10-1", NULL, 8, 0},

Reply via email to