Skip to contentSkip to conversation

platform/x86: sony-laptop: Mark expected switch fall-through

PATCH In review Gustavo A. R. Silva 4 participants 5 messages Jul 5, 2018 – Sep 11, 2018

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 platform/x86: sony-laptop: Mark expected switch fall-through

In preparation to enabling -Wimplicit-fallthrough, mark switch cases where we are expecting to fall through.

---
 drivers/platform/x86/sony-laptop.c | 1 +
 1 file changed, 1 insertion(+)
drivers/platform/x86/sony-laptop.c +1 -0
index b205b03..e614cb7 100644
@@ -4427,6 +4427,7 @@ sony_pic_read_possible_resource(struct acpi_resource *resource, void *context)
 	default:
 		dprintk("Resource %d isn't an IRQ nor an IO port\n",
 			resource->type);
+		/* fall through */
 
 	case ACPI_RESOURCE_TYPE_END_TAG:
 		return AE_OK;
Signature · 1 line
2.7.4
#1 lore raw
Quoted 13 lines · Gustavo A. R. Silva

In preparation to enabling -Wimplicit-fallthrough, mark switch cases where we are expecting to fall through.

---
 drivers/platform/x86/sony-laptop.c | 1 +
 1 file changed, 1 insertion(+)
drivers/platform/x86/sony-laptop.c +0 -0
index b205b03..e614cb7 100644

drivers/platform/x86/sony-laptop.c sony_pic_read_possible_resource(struct acpi_resource *resource, void *context) · line 4430

Quoted 4 lines
drivers/platform/x86/sony-laptop.c +1 -0
@@ -4427,6 +4427,7 @@ sony_pic_read_possible_resource(struct acpi_resource *resource, void *context)
 	default:
 		dprintk("Resource %d isn't an IRQ nor an IO port\n",
 			resource->type);
+		/* fall through */

Here too, I wonder if this is intentional. Either way, from what I can see, the final line in the function:

	return AE_CTRL_TERMINATE;

Is unreachable as there are no "break" statements in the switch, and the default falls through to return AE_OK. Something doesn't seem right here.

Signature · 2 lines
Darren Hart
VMware Open Source Technology Center
#2 lore raw
Quoted 4 lines · Darren Hart
        return AE_CTRL_TERMINATE;

Is unreachable as there are no "break" statements in the switch, and the default falls through to return AE_OK. Something doesn't seem right here.

Darren, I didn't look at the code in question, though just to clarify such error codes.
If the function used in acpi_walk_namespace() or alike, AE_OK means "To continue", while AE_CTRL_TERMINATE to "stop, whatever we looked for is found right now".

Signature · 2 lines
With Best Regards,
Andy Shevchenko
maintainer
#3 lore raw
In reply to Darren Hart
Quoted 22 lines · Darren Hart
Quoted 13 lines · Gustavo A. R. Silva

In preparation to enabling -Wimplicit-fallthrough, mark switch cases where we are expecting to fall through.

---
 drivers/platform/x86/sony-laptop.c | 1 +
 1 file changed, 1 insertion(+)
drivers/platform/x86/sony-laptop.c +0 -0
index b205b03..e614cb7 100644

drivers/platform/x86/sony-laptop.c sony_pic_read_possible_resource(struct acpi_resource *resource, void *context) · line 4430

Quoted 4 lines
drivers/platform/x86/sony-laptop.c +1 -0
@@ -4427,6 +4427,7 @@ sony_pic_read_possible_resource(struct acpi_resource *resource, void *context)
 	default:
 		dprintk("Resource %d isn't an IRQ nor an IO port\n",
 			resource->type);
+		/* fall through */

Here too, I wonder if this is intentional. Either way, from what I can see, the final line in the function:

Quoted 4 lines
	return AE_CTRL_TERMINATE;

Is unreachable as there are no "break" statements in the switch, and the default falls through to return AE_OK. Something doesn't seem right here.

I think so too. Looks to me that the default case was meant to return AE_CTRL_TERMINATE (i.e. swapping it to be last would do).

Having written that code aeons ago, I'm not sure if there is a good reason to be like that, though it still looks like a bug (that existed ever since...).

Want to fix it as part of this patch series? Or I can send a patch myself, let me know.

Signature · 2 lines
mattia
:wq!
#4 lore raw
Quoted 31 lines · Mattia Dongili
Quoted 22 lines · Darren Hart
Quoted 13 lines · Gustavo A. R. Silva

In preparation to enabling -Wimplicit-fallthrough, mark switch cases where we are expecting to fall through.

---
 drivers/platform/x86/sony-laptop.c | 1 +
 1 file changed, 1 insertion(+)
drivers/platform/x86/sony-laptop.c +0 -0
index b205b03..e614cb7 100644

drivers/platform/x86/sony-laptop.c sony_pic_read_possible_resource(struct acpi_resource *resource, void *context) · line 4430

Quoted 4 lines
drivers/platform/x86/sony-laptop.c +1 -0
@@ -4427,6 +4427,7 @@ sony_pic_read_possible_resource(struct acpi_resource *resource, void *context)
 	default:
 		dprintk("Resource %d isn't an IRQ nor an IO port\n",
 			resource->type);
+		/* fall through */

Here too, I wonder if this is intentional. Either way, from what I can see, the final line in the function:

Quoted 4 lines
	return AE_CTRL_TERMINATE;

Is unreachable as there are no "break" statements in the switch, and the default falls through to return AE_OK. Something doesn't seem right here.

I think so too. Looks to me that the default case was meant to return AE_CTRL_TERMINATE (i.e. swapping it to be last would do).

Quoted 6 lines

Having written that code aeons ago, I'm not sure if there is a good reason to be like that, though it still looks like a bug (that existed ever since...).

Want to fix it as part of this patch series? Or I can send a patch myself, let me know.

Mattia,

I'd prefer to decouple the fix from the implicit fall through discussion. Please send a separate fix.

Signature · 2 lines
Darren Hart
VMware Open Source Technology Center