|
Message-ID: <CAGXu5jLNvHVhbyr5Cbyoe8o0ARv52sU-NEpD+u2UYfESM3ofCw@mail.gmail.com> Date: Thu, 24 Jan 2019 09:36:11 +1300 From: Kees Cook <keescook@...omium.org> To: Matthew Wilcox <willy@...radead.org> Cc: Jani Nikula <jani.nikula@...ux.intel.com>, Greg KH <gregkh@...uxfoundation.org>, dev@...nvswitch.org, Ard Biesheuvel <ard.biesheuvel@...aro.org>, Network Development <netdev@...r.kernel.org>, intel-gfx@...ts.freedesktop.org, linux-usb@...r.kernel.org, LKML <linux-kernel@...r.kernel.org>, Maling list - DRI developers <dri-devel@...ts.freedesktop.org>, Linux-MM <linux-mm@...ck.org>, linux-security-module <linux-security-module@...r.kernel.org>, Kernel Hardening <kernel-hardening@...ts.openwall.com>, intel-wired-lan@...ts.osuosl.org, "linux-fsdevel@...r.kernel.org" <linux-fsdevel@...r.kernel.org>, xen-devel <xen-devel@...ts.xenproject.org>, Laura Abbott <labbott@...hat.com>, linux-kbuild <linux-kbuild@...r.kernel.org>, Alexander Popov <alex.popov@...ux.com> Subject: Re: [Intel-gfx] [PATCH 1/3] treewide: Lift switch variables out of switches On Thu, Jan 24, 2019 at 8:18 AM Matthew Wilcox <willy@...radead.org> wrote: > > On Wed, Jan 23, 2019 at 04:17:30PM +0200, Jani Nikula wrote: > > Can't have: > > > > switch (i) { > > int j; > > case 0: > > /* ... */ > > } > > > > because it can't be turned into: > > > > switch (i) { > > int j = 0; /* not valid C */ > > case 0: > > /* ... */ > > } > > > > but can have e.g.: > > > > switch (i) { > > case 0: > > { > > int j = 0; > > /* ... */ > > } > > } > > > > I think Kees' approach of moving such variable declarations to the > > enclosing block scope is better than adding another nesting block. > > Another nesting level would be bad, but I think this is OK: > > switch (i) { > case 0: { > int j = 0; > /* ... */ > } > case 1: { > void *p = q; > /* ... */ > } > } > > I can imagine Kees' patch might have a bad effect on stack consumption, > unless GCC can be relied on to be smart enough to notice the > non-overlapping liveness of the vriables and use the same stack slots > for both. GCC is reasonable at this. The main issue, though, was most of these places were using the variables in multiple case statements, so they couldn't be limited to a single block (or they'd need to be manually repeated in each block, which is even more ugly, IMO). Whatever the consensus, I'm happy to tweak the patch. Thanks! -- Kees Cook
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.