mirror of https://gitee.com/openkylin/linux.git
lib/test_bitmap.c: do not accidentally use stack VLA
This avoids an accidental stack VLA (since the compiler thinks the value of "len" can change, even when marked "const"). This just replaces it with a #define so it will DTRT. Seen with -Wvla. Fixed as part of the directive to remove all VLAs from the kernel: https://lkml.org/lkml/2018/3/7/621 Link: http://lkml.kernel.org/r/20180307212555.GA17927@beast Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-by: Andrew Morton <akpm@linux-foundation.org> Cc: Yury Norov <ynorov@caviumnetworks.com> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Matthew Wilcox <mawilcox@microsoft.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5f00ae0d3e
commit
f6f66c1bf5
|
@ -296,15 +296,17 @@ static void __init test_bitmap_parselist(void)
|
|||
}
|
||||
}
|
||||
|
||||
#define EXP_BYTES (sizeof(exp) * 8)
|
||||
|
||||
static void __init test_bitmap_arr32(void)
|
||||
{
|
||||
unsigned int nbits, next_bit, len = sizeof(exp) * 8;
|
||||
unsigned int nbits, next_bit;
|
||||
u32 arr[sizeof(exp) / 4];
|
||||
DECLARE_BITMAP(bmap2, len);
|
||||
DECLARE_BITMAP(bmap2, EXP_BYTES);
|
||||
|
||||
memset(arr, 0xa5, sizeof(arr));
|
||||
|
||||
for (nbits = 0; nbits < len; ++nbits) {
|
||||
for (nbits = 0; nbits < EXP_BYTES; ++nbits) {
|
||||
bitmap_to_arr32(arr, exp, nbits);
|
||||
bitmap_from_arr32(bmap2, arr, nbits);
|
||||
expect_eq_bitmap(bmap2, exp, nbits);
|
||||
|
@ -316,7 +318,7 @@ static void __init test_bitmap_arr32(void)
|
|||
" tail is not safely cleared: %d\n",
|
||||
nbits, next_bit);
|
||||
|
||||
if (nbits < len - 32)
|
||||
if (nbits < EXP_BYTES - 32)
|
||||
expect_eq_uint(arr[DIV_ROUND_UP(nbits, 32)],
|
||||
0xa5a5a5a5);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue