hso: fix rx parsing logic when skb allocation fails
authorAleksander Morgado <aleksander@aleksander.es>
Fri, 13 Feb 2015 13:51:02 +0000 (14:51 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 13 Feb 2015 15:17:05 +0000 (07:17 -0800)
If skb allocation fails once the IP header has been received, the rx state is
being set to WAIT_SYNC. The logic, though, shouldn't directly return, as the
buffer may contain a full packet, and therefore the WAIT_SYNC state needs to be
processed (resetting state to WAIT_IP, clearing rx_buf_size and re-initializing
rx_buf_missing).

So, just let the while loop continue so that in the next iteration the WAIT_SYNC
state cleanly stops the loop. The WAIT_SYNC processing will be done just after
that, only if the end of packet is flagged.

Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/hso.c

index 6b8efca..9cdfb3f 100644 (file)
@@ -914,7 +914,7 @@ static void packetizeRx(struct hso_net *odev, unsigned char *ip_pkt,
                                        /* We got no receive buffer. */
                                        D1("could not allocate memory");
                                        odev->rx_parse_state = WAIT_SYNC;
-                                       return;
+                                       continue;
                                }
 
                                /* Copy what we got so far. make room for iphdr