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

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

From: Jani Nikula <jani.nikula@linux.intel.com>
Date: 2019-01-23 14:22:07
Also in: dri-devel, intel-gfx, intel-wired-lan, linux-fsdevel, linux-kbuild, linux-mm, linux-security-module, linux-usb, lkml

On Wed, 23 Jan 2019, Jani Nikula [off-list ref] wrote:
On Wed, 23 Jan 2019, 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?

That's going to be a hard thing to keep from happening over time, as
this is valid C :(
Not all valid C is meant to be used! ;)

Anyway, I think you're mistaking the limitation to arbitrary blocks
while it's only about the switch block IIUC.

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.
PS. The patch is

Reviewed-by: Jani Nikula <redacted>

and the drivers/gpu/drm/i915/* parts are

Acked-by: Jani Nikula <redacted>

for merging via whichever tree is appropriate. (There'll be minor
conflicts with in-flight work in our -next tree, but no biggie.)


-- 
Jani Nikula, Intel Open Source Graphics Center
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help