aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile3
-rw-r--r--drivers/gpu/drm/i915/Makefile2
-rw-r--r--include/linux/compiler.h17
-rw-r--r--lib/Makefile2
-rw-r--r--scripts/Makefile.extrawarn1
5 files changed, 7 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index eb73f062e9e9..9aa352b38815 100644
--- a/Makefile
+++ b/Makefile
@@ -801,6 +801,9 @@ NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
801# warn about C99 declaration after statement 801# warn about C99 declaration after statement
802KBUILD_CFLAGS += -Wdeclaration-after-statement 802KBUILD_CFLAGS += -Wdeclaration-after-statement
803 803
804# Variable Length Arrays (VLAs) should not be used anywhere in the kernel
805KBUILD_CFLAGS += $(call cc-option,-Wvla)
806
804# disable pointer signed / unsigned warnings in gcc 4.0 807# disable pointer signed / unsigned warnings in gcc 4.0
805KBUILD_CFLAGS += -Wno-pointer-sign 808KBUILD_CFLAGS += -Wno-pointer-sign
806 809
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 5794f102f9b8..1c2857f13ad4 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -12,7 +12,7 @@
12# Note the danger in using -Wall -Wextra is that when CI updates gcc we 12# Note the danger in using -Wall -Wextra is that when CI updates gcc we
13# will most likely get a sudden build breakage... Hopefully we will fix 13# will most likely get a sudden build breakage... Hopefully we will fix
14# new warnings before CI updates! 14# new warnings before CI updates!
15subdir-ccflags-y := -Wall -Wextra -Wvla 15subdir-ccflags-y := -Wall -Wextra
16subdir-ccflags-y += $(call cc-disable-warning, unused-parameter) 16subdir-ccflags-y += $(call cc-disable-warning, unused-parameter)
17subdir-ccflags-y += $(call cc-disable-warning, type-limits) 17subdir-ccflags-y += $(call cc-disable-warning, type-limits)
18subdir-ccflags-y += $(call cc-disable-warning, missing-field-initializers) 18subdir-ccflags-y += $(call cc-disable-warning, missing-field-initializers)
diff --git a/include/linux/compiler.h b/include/linux/compiler.h
index 1921545c6351..4170fcee5adb 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -344,29 +344,14 @@ static inline void *offset_to_ptr(const int *off)
344#endif 344#endif
345#ifndef __compiletime_error 345#ifndef __compiletime_error
346# define __compiletime_error(message) 346# define __compiletime_error(message)
347/*
348 * Sparse complains of variable sized arrays due to the temporary variable in
349 * __compiletime_assert. Unfortunately we can't just expand it out to make
350 * sparse see a constant array size without breaking compiletime_assert on old
351 * versions of GCC (e.g. 4.2.4), so hide the array from sparse altogether.
352 */
353# ifndef __CHECKER__
354# define __compiletime_error_fallback(condition) \
355 do { ((void)sizeof(char[1 - 2 * condition])); } while (0)
356# endif
357#endif
358#ifndef __compiletime_error_fallback
359# define __compiletime_error_fallback(condition) do { } while (0)
360#endif 347#endif
361 348
362#ifdef __OPTIMIZE__ 349#ifdef __OPTIMIZE__
363# define __compiletime_assert(condition, msg, prefix, suffix) \ 350# define __compiletime_assert(condition, msg, prefix, suffix) \
364 do { \ 351 do { \
365 int __cond = !(condition); \
366 extern void prefix ## suffix(void) __compiletime_error(msg); \ 352 extern void prefix ## suffix(void) __compiletime_error(msg); \
367 if (__cond) \ 353 if (!(condition)) \
368 prefix ## suffix(); \ 354 prefix ## suffix(); \
369 __compiletime_error_fallback(__cond); \
370 } while (0) 355 } while (0)
371#else 356#else
372# define __compiletime_assert(condition, msg, prefix, suffix) do { } while (0) 357# define __compiletime_assert(condition, msg, prefix, suffix) do { } while (0)
diff --git a/lib/Makefile b/lib/Makefile
index 3d341f59f756..988949c4fd3a 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -53,7 +53,9 @@ obj-$(CONFIG_TEST_HASH) += test_hash.o test_siphash.o
53obj-$(CONFIG_TEST_IDA) += test_ida.o 53obj-$(CONFIG_TEST_IDA) += test_ida.o
54obj-$(CONFIG_TEST_KASAN) += test_kasan.o 54obj-$(CONFIG_TEST_KASAN) += test_kasan.o
55CFLAGS_test_kasan.o += -fno-builtin 55CFLAGS_test_kasan.o += -fno-builtin
56CFLAGS_test_kasan.o += $(call cc-disable-warning, vla)
56obj-$(CONFIG_TEST_UBSAN) += test_ubsan.o 57obj-$(CONFIG_TEST_UBSAN) += test_ubsan.o
58CFLAGS_test_ubsan.o += $(call cc-disable-warning, vla)
57UBSAN_SANITIZE_test_ubsan.o := y 59UBSAN_SANITIZE_test_ubsan.o := y
58obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o 60obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o
59obj-$(CONFIG_TEST_LIST_SORT) += test_list_sort.o 61obj-$(CONFIG_TEST_LIST_SORT) += test_list_sort.o
diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn
index 8d5357053f86..24b2fb1d1297 100644
--- a/scripts/Makefile.extrawarn
+++ b/scripts/Makefile.extrawarn
@@ -52,7 +52,6 @@ warning-3 += -Wpointer-arith
52warning-3 += -Wredundant-decls 52warning-3 += -Wredundant-decls
53warning-3 += -Wswitch-default 53warning-3 += -Wswitch-default
54warning-3 += $(call cc-option, -Wpacked-bitfield-compat) 54warning-3 += $(call cc-option, -Wpacked-bitfield-compat)
55warning-3 += $(call cc-option, -Wvla)
56 55
57warning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) 56warning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))
58warning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) 57warning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS)))