]> www.infradead.org Git - users/jedix/linux-maple.git/commit
kbuild: Switch from -Wvla to -Wvla-larger-than=1
authorKees Cook <kees@kernel.org>
Fri, 18 Apr 2025 21:32:39 +0000 (14:32 -0700)
committerKees Cook <kees@kernel.org>
Thu, 8 May 2025 16:42:06 +0000 (09:42 -0700)
commit5e88c48cb4bcbd0ea683373a106268933bb4edd2
tree30c3dfe3da2aedc31c0a231eb51a5e11bc4d2bfb
parent5106c6506c51aa93198908b094228a7143292b9e
kbuild: Switch from -Wvla to -Wvla-larger-than=1

Variable Length Arrays (VLAs) on the stack must not be used in the kernel.
Function parameter VLAs[1] should be usable, but -Wvla will warn for
those. For example, this will produce a warning but it is not using a
stack VLA:

    int something(size_t n, int array[n]) { ...

Clang has no way yet to distinguish between the VLA types[2], so
depend on GCC for now to keep stack VLAs out of the tree by using GCC's
-Wvla-larger-than=N option (though GCC may split -Wvla similarly[3] to
how Clang is planning to).

While GCC 8+ supports -Wvla-larger-than, only 9+ supports ...=0[4],
so use -Wvla-larger-than=1. Adjust mm/kasan/Makefile to remove it from
CFLAGS (GCC <9 appears unable to disable the warning correctly[5]).

The VLA usage in lib/test_ubsan.c was removed in commit 9d7ca61b1366
("lib/test_ubsan.c: VLA no longer used in kernel") so the lib/Makefile
disabling of VLA checking can be entirely removed.

Link: https://en.cppreference.com/w/c/language/array
Link: https://github.com/llvm/llvm-project/issues/57098
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98217
Link: https://lore.kernel.org/lkml/7780883c-0ac8-4aaa-b850-469e33b50672@linux.ibm.com/
Link: https://lore.kernel.org/r/202505071331.4iOzqmuE-lkp@intel.com/
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Link: https://lore.kernel.org/r/20250418213235.work.532-kees@kernel.org
Signed-off-by: Kees Cook <kees@kernel.org>
lib/Makefile
mm/kasan/Makefile
scripts/Makefile.extrawarn