From mboxrd@z Thu Jan 1 00:00:00 1970 From: Linus Torvalds Subject: Re: [PATCH v5 0/2] Remove false-positive VLAs when using max() Date: Fri, 16 Mar 2018 13:25:26 -0700 Message-ID: References: <1521174359-46392-1-git-send-email-keescook@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Cc: Florian Weimer , Kees Cook , Andrew Morton , Josh Poimboeuf , Rasmus Villemoes , Randy Dunlap , Miguel Ojeda , Ingo Molnar , Ian Abbott , linux-input , linux-btrfs , Network Development , Linux Kernel Mailing List , Kernel Hardening To: David Laight Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On Fri, Mar 16, 2018 at 10:44 AM, David Laight wrote: > > I looked at the generated code for one of the constant sized VLA that > the compiler barfed at. > It seemed to subtract constants from %sp separately for the VLA. > So it looks like the compiler treats them as VLA even though it > knows the size. > That is probably missing optimisation. Looking at the code is definitely an option. In fact, instead of depending on -Wvla, we could just make 'objtool' warn about real variable-sized stack frames. That said, if that "sizeof()" trick of Al's actually works with older gcc versions too (it *should*, but it's not like __builtin_choose_expr() and __builtin_constant_p() have well-defined rules in the standard), that may just be the solution. And if gcc ends up generating bad code for those "constant sized vlas" anyway, then -Wvla would effectively warn about that code generation problem. Linus