Thread (20 messages) 20 messages, 10 authors, 2019-02-12

Re: [PATCH 1/3] treewide: Lift switch variables out of switches

From: Ard Biesheuvel <hidden>
Date: 2019-01-23 12:12:39
Also in: dri-devel, intel-gfx, intel-wired-lan, linux-fsdevel, linux-kbuild, linux-mm, linux-usb, lkml, netdev

On Wed, 23 Jan 2019 at 13:09, Jann Horn [off-list ref] wrote:
On Wed, Jan 23, 2019 at 1:04 PM Greg KH [off-list ref] wrote:
quoted
On Wed, Jan 23, 2019 at 03:03:47AM -0800, Kees Cook wrote:
quoted
Variables declared in a switch statement before any case statements
cannot be initialized, so move all instances out of the switches.
After this, future always-initialized stack variables will work
and not throw warnings like this:

fs/fcntl.c: In function ‘send_sigio_to_task’:
fs/fcntl.c:738:13: warning: statement will never be executed [-Wswitch-unreachable]
   siginfo_t si;
             ^~
That's a pain, so this means we can't have any new variables in { }
scope except for at the top of a function?
AFAICS this only applies to switch statements (because they jump to a
case and don't execute stuff at the start of the block), not blocks
after if/while/... .
I guess that means it may apply to other cases where you do a 'goto'
into the middle of a for() loop, for instance (at the first
iteration), which is also a valid pattern.

Is there any way to tag these assignments so the diagnostic disregards them?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help