Gustavo has been working to fix up all of the switch statements that
"fall through" such that we can eventually turn on
-Wimplicit-fallthrough.  As part of that, the io_edgeport.c driver is a
bit "messy" with the parsing logic of a data packet.  Clean that logic
up a bit by unindenting one level of the logic, and properly label
/* Fall through */ to make gcc happy.

Reported-by: Gustavo A. R. Silva <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
index 4ca31c0e4174..48a439298a68 100644
--- a/drivers/usb/serial/io_edgeport.c
+++ b/drivers/usb/serial/io_edgeport.c
@@ -1751,7 +1751,7 @@ static void process_rcvd_data(struct edgeport_serial 
*edge_serial,
                                edge_serial->rxState = EXPECT_HDR2;
                                break;
                        }
-                       /* otherwise, drop on through */
+                       /* Fall through */
                case EXPECT_HDR2:
                        edge_serial->rxHeader2 = *buffer;
                        ++buffer;
@@ -1790,29 +1790,20 @@ static void process_rcvd_data(struct edgeport_serial 
*edge_serial,
                                                edge_serial->rxHeader2, 0);
                                edge_serial->rxState = EXPECT_HDR1;
                                break;
-                       } else {
-                               edge_serial->rxPort =
-                                   IOSP_GET_HDR_PORT(edge_serial->rxHeader1);
-                               edge_serial->rxBytesRemaining =
-                                   IOSP_GET_HDR_DATA_LEN(
-                                               edge_serial->rxHeader1,
-                                               edge_serial->rxHeader2);
-                               dev_dbg(dev, "%s - Data for Port %u Len %u\n",
-                                       __func__,
-                                       edge_serial->rxPort,
-                                       edge_serial->rxBytesRemaining);
-
-                               /* ASSERT(DevExt->RxPort < DevExt->NumPorts);
-                                * ASSERT(DevExt->RxBytesRemaining <
-                                *              IOSP_MAX_DATA_LENGTH);
-                                */
-
-                               if (bufferLength == 0) {
-                                       edge_serial->rxState = EXPECT_DATA;
-                                       break;
-                               }
-                               /* Else, drop through */
                        }
+
+                       edge_serial->rxPort = 
IOSP_GET_HDR_PORT(edge_serial->rxHeader1);
+                       edge_serial->rxBytesRemaining = 
IOSP_GET_HDR_DATA_LEN(edge_serial->rxHeader1,
+                                                                             
edge_serial->rxHeader2);
+                       dev_dbg(dev, "%s - Data for Port %u Len %u\n", __func__,
+                               edge_serial->rxPort,
+                               edge_serial->rxBytesRemaining);
+
+                       if (bufferLength == 0) {
+                               edge_serial->rxState = EXPECT_DATA;
+                               break;
+                       }
+                       /* Fall through */
                case EXPECT_DATA: /* Expect data */
                        if (bufferLength < edge_serial->rxBytesRemaining) {
                                rxLen = bufferLength;

Reply via email to