From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 84A3DC369AB for ; Mon, 21 Apr 2025 16:17:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 10EA66B0005; Mon, 21 Apr 2025 12:17:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0BE656B0007; Mon, 21 Apr 2025 12:17:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EC8D76B0008; Mon, 21 Apr 2025 12:17:33 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id D1FC36B0005 for ; Mon, 21 Apr 2025 12:17:33 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id CD96880862 for ; Mon, 21 Apr 2025 16:17:34 +0000 (UTC) X-FDA: 83358556428.30.9F33127 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf04.hostedemail.com (Postfix) with ESMTP id 04B3640012 for ; Mon, 21 Apr 2025 16:17:32 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=RkEOPtLM; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf04.hostedemail.com: domain of nathan@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=nathan@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745252253; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=KRZi2zCeNSkZi+s1ZDTsJt8BFsTp3vDCxh9f/3q8nd8=; b=d3VOv05rlnXZOjZALmt0I7BsWYo/IU+h84ljyuw+xGM9P9uQYoStIkFXfV2GbzpCREAAsy j4x/jeSM23rQhP73v01ctZJW8HqcPkg37DlX0mVZk6fGf6IJJPJcio0JTNGk2fkLWsoK6x i+Z3YLpXADY5pt90zGMh4ZCAsI1wg1s= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745252253; a=rsa-sha256; cv=none; b=jXRU9V6GhJsPn8/arIDV9JQrC++ZjhArZI9ZITCwG22guNZuZVEpuJWYPjcRq2nJ/xm+9W o8VsBShRZGtBs5Dw/wBtWFNR63KxIYefj9nhdBGSDl0Kb2C1nixWCi61xE9ax7eZ0yq6gj jU7Wishc3kkn1qcbsHMjxaq0Kjh+eaQ= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=RkEOPtLM; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf04.hostedemail.com: domain of nathan@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=nathan@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 2A8BA44F2C; Mon, 21 Apr 2025 16:17:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE144C4CEE4; Mon, 21 Apr 2025 16:17:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1745252251; bh=zZjJug2ojlk7B/L1/Ay2G/DAGNeupwICVA+YK/CB0Ng=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=RkEOPtLMEvJT0lnK8J8+VHN4kf4nhgwNj6DETp7+HlYoJEdJ+b9Hey4FsCSv1s5ym Bq1DqzrRtCxIcCRvwaWFNaPwYarfJXzFTyUrz68mYLrSnwNWs8yYjGcn4VnNFCGeje I9Vz9HK7PcdIYjVR+K7OvHg0UMOhzPEvoEZvzRplEmGWdt+rDgQ/eOEbbYw2sT4igJ M05A5+SbFbSvdYHS6SykX/UHmm1HYeGCBoavZSPBwOgvizlV36aWXysKehqpahNZ6K Qpv+p9coAmfOHWOTj8iMNHa0w6SthNyNUXUPL92YjEuMGyxnbt71f8G6vAIZCZ6gSs dA0DlW+yXI2Bw== Date: Mon, 21 Apr 2025 09:17:25 -0700 From: Nathan Chancellor To: Kees Cook Cc: Christoph Hellwig , Masahiro Yamada , Andrew Morton , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Dmitry Vyukov , Vincenzo Frascino , Nicolas Schier , Nick Desaulniers , Bill Wendling , Justin Stitt , kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-kbuild@vger.kernel.org, llvm@lists.linux.dev, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: Re: [PATCH] kbuild: Switch from -Wvla to -Wvla-larger-than=0 Message-ID: <20250421161725.GA3253782@ax162> References: <20250418213235.work.532-kees@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250418213235.work.532-kees@kernel.org> X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 04B3640012 X-Rspam-User: X-Stat-Signature: ahdat7ek41nrgz8p64owmqdyengdwuaf X-HE-Tag: 1745252252-595743 X-HE-Meta: U2FsdGVkX1+t8H9JtabPvPU1fW1lqhzPus89AoWQaD3UMfwo3TQzUGOL1h7Tc9IwmnPtnYsL0jnCSfZyO1Yd3mG/jysXeA8vn0RmSmMEVk2EgL/hji9T29WO4yf/6LFH589SqtNkMMgR20z+x48H5acg52n2GmWEUJzU6hIBhcWVT2i47dehFbazGYE5yQFqII+hof5gB6wXGcfJvBFRgTm+s/kfGp4gkpbpwaHyiBN7AarCXnFvyNImb0aDmMGN0OE6tB+vzP5Z+RIIns0R3XB8ecmxPXVXB3NGJoJ/lIMsM7IVRmtUvjNoc5QyGWyOZ0oP9fEkj30eGxv132Tf/RARvPzPmlbwfqkcFnsIEVnLcnGSf9OiEwXywiaLyoIyUHpd13b47x9eT3iOu9ByzMFVoSgvDezpWKmKlBc+vhlUK+F3OdsoOS3B7DRTaYtA5y76O5yKScnOzXiQXEeJgIcBHpuhSIgImoq9jp0ZFFTehJE6bOAZLoyBUYI+rjCnLz3Xjr7MGEJNtsAGCDML8Cq/1mcB1PM9hgO47mR2D2AVVy10rZb4Y+bCJnfdPPKwfHh2lHW79z53P497OofyMHhUoTYsv15hchfrHgUrowLawOEEqSDXguCWpTl+0rCOjljeuMBYqNrBn5oatiS3axnN4TGxsGish0cP0F8SEAjwgX7pcABKB4To1LoHD/L+0oDw2wJmaBkaBuY6rTqgcI74mNoVucAkE1Hd0kgg51j7KT9XgA53gFMEbUjuArVgYy0DFLZaU1frFxyChl2iV+GI/dXyTH3di4xqZLbBevHKr19Gs8hM9PapuQ0eQIyygpmlQpILFzR7M1BjoCv9UCghB0Ikn3hKwuJC+PxMRU35RAhJZd6dU029Ul1euvUL1XpxbBuagpwAtV2V0A4I3rq/tWX5CBCfiWVApsWWwV7S4MTVSA02/hm+OH1sndECs22x9sWwG7l5LpeFdU8 W+DSZJVq 2F/R0xNB4rA6kx+e7O8OUDXCFhUD6Ls0d00eLu8DsptpDH1SLTBmeZw5/WSoav/jCgQWhaipP2gse0mLh4CukKMxd0TtPqCbpyPdfDEJ9vWt7C0VBSqB9KRymxCYSt36Bq8XHLuHZbdDP209LYI60b84S2rt61O0Rk2aaWVD1pxH6ssESD4w4osgVl5cQMRxF7id52gulEx8IyTsc5xCuwmTjJ87MNdx7GnRaMeFHloVogNt+VgzidKexNxyk0l7emygKwh9ef4zxfYQBTIJKVWuotcqQback8/SJ3++WXjwXSuKTjCXvJrYFZ7ZUjSr9xd94vLzf+aPLfTR/XVC9KYCob2sOe/ZZYsTY9tZDUs+YwEFPeWZAtbprAbalrsvUeSDw57NlLJEIbGXCBDSm4W2TGD0Ax2ev5Rg6MijMTLI8WkPD9BOPQH+1kM2BukHseAabB3oiERhlbLM= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, Apr 18, 2025 at 02:32:39PM -0700, Kees Cook wrote: > 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=0 option (though GCC may split -Wvla[3] similarly to > how Clang is planning to). > > Switch to -Wvla-larger-than=0 and adjust the two VLA-checking selftests > to disable the updated option name. > > Link: https://en.cppreference.com/w/c/language/array [1] > Link: https://github.com/llvm/llvm-project/issues/57098 [2] > Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98217 [3] > Signed-off-by: Kees Cook Reviewed-by: Nathan Chancellor > lib/Makefile | 2 +- > mm/kasan/Makefile | 2 +- > scripts/Makefile.extrawarn | 9 +++++++-- > 3 files changed, 9 insertions(+), 4 deletions(-) > > diff --git a/lib/Makefile b/lib/Makefile > index f07b24ce1b3f..37b6e5782ecb 100644 > --- a/lib/Makefile > +++ b/lib/Makefile > @@ -71,7 +71,7 @@ CFLAGS_test_bitops.o += -Werror > obj-$(CONFIG_TEST_SYSCTL) += test_sysctl.o > obj-$(CONFIG_TEST_IDA) += test_ida.o > obj-$(CONFIG_TEST_UBSAN) += test_ubsan.o > -CFLAGS_test_ubsan.o += $(call cc-disable-warning, vla) > +CFLAGS_test_ubsan.o += $(call cc-option, -Wno-vla-larger-than) > CFLAGS_test_ubsan.o += $(call cc-disable-warning, unused-but-set-variable) > UBSAN_SANITIZE_test_ubsan.o := y > obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o > diff --git a/mm/kasan/Makefile b/mm/kasan/Makefile > index 1a958e7c8a46..0e326116a70b 100644 > --- a/mm/kasan/Makefile > +++ b/mm/kasan/Makefile > @@ -35,7 +35,7 @@ CFLAGS_shadow.o := $(CC_FLAGS_KASAN_RUNTIME) > CFLAGS_hw_tags.o := $(CC_FLAGS_KASAN_RUNTIME) > CFLAGS_sw_tags.o := $(CC_FLAGS_KASAN_RUNTIME) > > -CFLAGS_KASAN_TEST := $(CFLAGS_KASAN) $(call cc-disable-warning, vla) > +CFLAGS_KASAN_TEST := $(CFLAGS_KASAN) $(call cc-option, -Wno-vla-larger-than) > ifndef CONFIG_CC_HAS_KASAN_MEMINTRINSIC_PREFIX > # If compiler instruments memintrinsics by prefixing them with __asan/__hwasan, > # we need to treat them normally (as builtins), otherwise the compiler won't > diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn > index d75897559d18..0229b10c5d81 100644 > --- a/scripts/Makefile.extrawarn > +++ b/scripts/Makefile.extrawarn > @@ -45,8 +45,13 @@ endif > # These result in bogus false positives > KBUILD_CFLAGS += $(call cc-disable-warning, dangling-pointer) > > -# Variable Length Arrays (VLAs) should not be used anywhere in the kernel > -KBUILD_CFLAGS += -Wvla > +# Stack Variable Length Arrays (VLAs) must not be used in the kernel. > +# Function array parameters should, however, be usable, but -Wvla will > +# warn for those. Clang has no way yet to distinguish between the VLA > +# types, so depend on GCC for now to keep stack VLAs out of the tree. > +# https://github.com/llvm/llvm-project/issues/57098 > +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98217 > +KBUILD_CFLAGS += $(call cc-option,-Wvla-larger-than=0) > > # disable pointer signed / unsigned warnings in gcc 4.0 > KBUILD_CFLAGS += -Wno-pointer-sign > -- > 2.34.1 >