From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f193.google.com ([209.85.192.193]:33676 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751027AbeFZRkQ (ORCPT ); Tue, 26 Jun 2018 13:40:16 -0400 Received: by mail-pf0-f193.google.com with SMTP id b17-v6so8423232pfi.0 for ; Tue, 26 Jun 2018 10:40:16 -0700 (PDT) Date: Tue, 26 Jun 2018 10:40:13 -0700 From: Kees Cook Subject: [RFC][PATCH] Makefile: globally enable VLA warning Message-ID: <20180626174013.GA41617@beast> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Sender: linux-kbuild-owner@vger.kernel.org List-ID: To: linux-kernel@vger.kernel.org Cc: Joe Perches , "Gustavo A. R. Silva" , Masahiro Yamada , Michal Marek , Andrew Morton , Palmer Dabbelt , Matt Redfearn , Sebastian Andrzej Siewior , David Airlie , linux-kbuild@vger.kernel.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Linus Torvalds This is the patch I've got prepared now that fixes for all VLAs have been sent to maintainers (some are still under review/adjustment, but there aren't any unexplored cases left). My intention would be to have this land at the end of the next merge window after all the pending VLA patches have landed. I just wanted to get any feedback here, since it touches a couple areas in the process and I didn't want anyone to be surprised. :) Thanks! -Kees ---- Now that VLAs have been removed from the kernel, enable the VLA warning globally. The only exceptions to this are the KASan an UBSan tests which are explicitly checking that VLAs trigger their respective tests. Signed-off-by: Kees Cook --- Makefile | 3 +++ drivers/gpu/drm/i915/Makefile | 2 +- lib/Makefile | 2 ++ scripts/Makefile.extrawarn | 1 - 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c9132594860b..3d5013ec4116 100644 --- a/Makefile +++ b/Makefile @@ -778,6 +778,9 @@ NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) # warn about C99 declaration after statement KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,) +# VLAs should not be used anywhere in the kernel +KBUILD_CFLAGS += $(call cc-option,-Wvla) + # disable pointer signed / unsigned warnings in gcc 4.0 KBUILD_CFLAGS += $(call cc-disable-warning, pointer-sign) diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index 4c6adae23e18..289ab5dc5712 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile @@ -12,7 +12,7 @@ # Note the danger in using -Wall -Wextra is that when CI updates gcc we # will most likely get a sudden build breakage... Hopefully we will fix # new warnings before CI updates! -subdir-ccflags-y := -Wall -Wextra -Wvla +subdir-ccflags-y := -Wall -Wextra subdir-ccflags-y += $(call cc-disable-warning, unused-parameter) subdir-ccflags-y += $(call cc-disable-warning, type-limits) subdir-ccflags-y += $(call cc-disable-warning, missing-field-initializers) diff --git a/lib/Makefile b/lib/Makefile index 90dc5520b784..4720e276232e 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -52,7 +52,9 @@ obj-$(CONFIG_TEST_SYSCTL) += test_sysctl.o obj-$(CONFIG_TEST_HASH) += test_hash.o test_siphash.o obj-$(CONFIG_TEST_KASAN) += test_kasan.o CFLAGS_test_kasan.o += -fno-builtin +CFLAGS_test_kasan.o += $(call cc-disable-warning, vla) obj-$(CONFIG_TEST_UBSAN) += test_ubsan.o +CFLAGS_test_ubsan.o += $(call cc-disable-warning, vla) UBSAN_SANITIZE_test_ubsan.o := y obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o obj-$(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 warning-3 += -Wredundant-decls warning-3 += -Wswitch-default warning-3 += $(call cc-option, -Wpacked-bitfield-compat) -warning-3 += $(call cc-option, -Wvla) warning := $(warning-$(findstring 1, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) warning += $(warning-$(findstring 2, $(KBUILD_ENABLE_EXTRA_GCC_CHECKS))) -- 2.17.1 -- Kees Cook Pixel Security From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kees Cook Subject: [RFC][PATCH] Makefile: globally enable VLA warning Date: Tue, 26 Jun 2018 10:40:13 -0700 Message-ID: <20180626174013.GA41617@beast> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: linux-kernel@vger.kernel.org Cc: Michal Marek , "Gustavo A. R. Silva" , David Airlie , Sebastian Andrzej Siewior , Matt Redfearn , dri-devel@lists.freedesktop.org, Masahiro Yamada , Palmer Dabbelt , Joe Perches , Andrew Morton , Linus Torvalds , intel-gfx@lists.freedesktop.org, linux-kbuild@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBpcyB0aGUgcGF0Y2ggSSd2ZSBnb3QgcHJlcGFyZWQgbm93IHRoYXQgZml4ZXMgZm9yIGFs bCBWTEFzIGhhdmUgYmVlbgpzZW50IHRvIG1haW50YWluZXJzIChzb21lIGFyZSBzdGlsbCB1bmRl ciByZXZpZXcvYWRqdXN0bWVudCwgYnV0IHRoZXJlCmFyZW4ndCBhbnkgdW5leHBsb3JlZCBjYXNl cyBsZWZ0KS4gTXkgaW50ZW50aW9uIHdvdWxkIGJlIHRvIGhhdmUgdGhpcyBsYW5kCmF0IHRoZSBl bmQgb2YgdGhlIG5leHQgbWVyZ2Ugd2luZG93IGFmdGVyIGFsbCB0aGUgcGVuZGluZyBWTEEgcGF0 Y2hlcwpoYXZlIGxhbmRlZC4gSSBqdXN0IHdhbnRlZCB0byBnZXQgYW55IGZlZWRiYWNrIGhlcmUs IHNpbmNlIGl0IHRvdWNoZXMKYSBjb3VwbGUgYXJlYXMgaW4gdGhlIHByb2Nlc3MgYW5kIEkgZGlk bid0IHdhbnQgYW55b25lIHRvIGJlIHN1cnByaXNlZC4gOikKClRoYW5rcyEKCi1LZWVzCgotLS0t Ck5vdyB0aGF0IFZMQXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUga2VybmVsLCBlbmFibGUg dGhlIFZMQSB3YXJuaW5nCmdsb2JhbGx5LiBUaGUgb25seSBleGNlcHRpb25zIHRvIHRoaXMgYXJl IHRoZSBLQVNhbiBhbiBVQlNhbiB0ZXN0cyB3aGljaAphcmUgZXhwbGljaXRseSBjaGVja2luZyB0 aGF0IFZMQXMgdHJpZ2dlciB0aGVpciByZXNwZWN0aXZlIHRlc3RzLgoKU2lnbmVkLW9mZi1ieTog S2VlcyBDb29rIDxrZWVzY29va0BjaHJvbWl1bS5vcmc+Ci0tLQogTWFrZWZpbGUgICAgICAgICAg ICAgICAgICAgICAgfCAzICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgfCAyICst CiBsaWIvTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8IDIgKysKIHNjcmlwdHMvTWFrZWZpbGUu ZXh0cmF3YXJuICAgIHwgMSAtCiA0IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IGM5MTMy NTk0ODYwYi4uM2Q1MDEzZWM0MTE2IDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmls ZQpAQCAtNzc4LDYgKzc3OCw5IEBAIE5PU1RESU5DX0ZMQUdTICs9IC1ub3N0ZGluYyAtaXN5c3Rl bSAkKHNoZWxsICQoQ0MpIC1wcmludC1maWxlLW5hbWU9aW5jbHVkZSkKICMgd2FybiBhYm91dCBD OTkgZGVjbGFyYXRpb24gYWZ0ZXIgc3RhdGVtZW50CiBLQlVJTERfQ0ZMQUdTICs9ICQoY2FsbCBj Yy1vcHRpb24sLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQsKQogCisjIFZMQXMgc2hvdWxk IG5vdCBiZSB1c2VkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwKK0tCVUlMRF9DRkxBR1MgKz0gJChj YWxsIGNjLW9wdGlvbiwtV3ZsYSkKKwogIyBkaXNhYmxlIHBvaW50ZXIgc2lnbmVkIC8gdW5zaWdu ZWQgd2FybmluZ3MgaW4gZ2NjIDQuMAogS0JVSUxEX0NGTEFHUyArPSAkKGNhbGwgY2MtZGlzYWJs ZS13YXJuaW5nLCBwb2ludGVyLXNpZ24pCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggNGM2YWRh ZTIzZTE4Li4yODlhYjVkYzU3MTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0xMiw3ICsxMiw3 IEBACiAjIE5vdGUgdGhlIGRhbmdlciBpbiB1c2luZyAtV2FsbCAtV2V4dHJhIGlzIHRoYXQgd2hl biBDSSB1cGRhdGVzIGdjYyB3ZQogIyB3aWxsIG1vc3QgbGlrZWx5IGdldCBhIHN1ZGRlbiBidWls ZCBicmVha2FnZS4uLiBIb3BlZnVsbHkgd2Ugd2lsbCBmaXgKICMgbmV3IHdhcm5pbmdzIGJlZm9y ZSBDSSB1cGRhdGVzIQotc3ViZGlyLWNjZmxhZ3MteSA6PSAtV2FsbCAtV2V4dHJhIC1XdmxhCitz dWJkaXItY2NmbGFncy15IDo9IC1XYWxsIC1XZXh0cmEKIHN1YmRpci1jY2ZsYWdzLXkgKz0gJChj YWxsIGNjLWRpc2FibGUtd2FybmluZywgdW51c2VkLXBhcmFtZXRlcikKIHN1YmRpci1jY2ZsYWdz LXkgKz0gJChjYWxsIGNjLWRpc2FibGUtd2FybmluZywgdHlwZS1saW1pdHMpCiBzdWJkaXItY2Nm bGFncy15ICs9ICQoY2FsbCBjYy1kaXNhYmxlLXdhcm5pbmcsIG1pc3NpbmctZmllbGQtaW5pdGlh bGl6ZXJzKQpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlCmluZGV4IDkw ZGM1NTIwYjc4NC4uNDcyMGUyNzYyMzJlIDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUKKysrIGIv bGliL01ha2VmaWxlCkBAIC01Miw3ICs1Miw5IEBAIG9iai0kKENPTkZJR19URVNUX1NZU0NUTCkg Kz0gdGVzdF9zeXNjdGwubwogb2JqLSQoQ09ORklHX1RFU1RfSEFTSCkgKz0gdGVzdF9oYXNoLm8g dGVzdF9zaXBoYXNoLm8KIG9iai0kKENPTkZJR19URVNUX0tBU0FOKSArPSB0ZXN0X2thc2FuLm8K IENGTEFHU190ZXN0X2thc2FuLm8gKz0gLWZuby1idWlsdGluCitDRkxBR1NfdGVzdF9rYXNhbi5v ICs9ICQoY2FsbCBjYy1kaXNhYmxlLXdhcm5pbmcsIHZsYSkKIG9iai0kKENPTkZJR19URVNUX1VC U0FOKSArPSB0ZXN0X3Vic2FuLm8KK0NGTEFHU190ZXN0X3Vic2FuLm8gKz0gJChjYWxsIGNjLWRp c2FibGUtd2FybmluZywgdmxhKQogVUJTQU5fU0FOSVRJWkVfdGVzdF91YnNhbi5vIDo9IHkKIG9i ai0kKENPTkZJR19URVNUX0tTVFJUT1gpICs9IHRlc3Qta3N0cnRveC5vCiBvYmotJChDT05GSUdf VEVTVF9MSVNUX1NPUlQpICs9IHRlc3RfbGlzdF9zb3J0Lm8KZGlmZiAtLWdpdCBhL3NjcmlwdHMv TWFrZWZpbGUuZXh0cmF3YXJuIGIvc2NyaXB0cy9NYWtlZmlsZS5leHRyYXdhcm4KaW5kZXggOGQ1 MzU3MDUzZjg2Li4yNGIyZmIxZDEyOTcgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvTWFrZWZpbGUuZXh0 cmF3YXJuCisrKyBiL3NjcmlwdHMvTWFrZWZpbGUuZXh0cmF3YXJuCkBAIC01Miw3ICs1Miw2IEBA IHdhcm5pbmctMyArPSAtV3BvaW50ZXItYXJpdGgKIHdhcm5pbmctMyArPSAtV3JlZHVuZGFudC1k ZWNscwogd2FybmluZy0zICs9IC1Xc3dpdGNoLWRlZmF1bHQKIHdhcm5pbmctMyArPSAkKGNhbGwg Y2Mtb3B0aW9uLCAtV3BhY2tlZC1iaXRmaWVsZC1jb21wYXQpCi13YXJuaW5nLTMgKz0gJChjYWxs IGNjLW9wdGlvbiwgLVd2bGEpCiAKIHdhcm5pbmcgOj0gJCh3YXJuaW5nLSQoZmluZHN0cmluZyAx LCAkKEtCVUlMRF9FTkFCTEVfRVhUUkFfR0NDX0NIRUNLUykpKQogd2FybmluZyArPSAkKHdhcm5p bmctJChmaW5kc3RyaW5nIDIsICQoS0JVSUxEX0VOQUJMRV9FWFRSQV9HQ0NfQ0hFQ0tTKSkpCi0t IAoyLjE3LjEKCgotLSAKS2VlcyBDb29rClBpeGVsIFNlY3VyaXR5Cl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=