mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
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:
committed by
Linus Torvalds
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)
|
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];
|
u32 arr[sizeof(exp) / 4];
|
||||||
DECLARE_BITMAP(bmap2, len);
|
DECLARE_BITMAP(bmap2, EXP_BYTES);
|
||||||
|
|
||||||
memset(arr, 0xa5, sizeof(arr));
|
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_to_arr32(arr, exp, nbits);
|
||||||
bitmap_from_arr32(bmap2, arr, nbits);
|
bitmap_from_arr32(bmap2, arr, nbits);
|
||||||
expect_eq_bitmap(bmap2, exp, 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",
|
" tail is not safely cleared: %d\n",
|
||||||
nbits, next_bit);
|
nbits, next_bit);
|
||||||
|
|
||||||
if (nbits < len - 32)
|
if (nbits < EXP_BYTES - 32)
|
||||||
expect_eq_uint(arr[DIV_ROUND_UP(nbits, 32)],
|
expect_eq_uint(arr[DIV_ROUND_UP(nbits, 32)],
|
||||||
0xa5a5a5a5);
|
0xa5a5a5a5);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user