diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2015-02-13 14:51:02 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-02-13 07:17:05 -0800 |
commit | 0416605548766782acee60701b5c712e9b9e1bc2 (patch) | |
tree | 81f8ebe19c80ac3fbe29b1044885847002047693 /drivers | |
parent | ba34e6d9d346fe4e05d7e417b9edf5140772d34c (diff) | |
download | linux-0416605548766782acee60701b5c712e9b9e1bc2.tar.gz linux-0416605548766782acee60701b5c712e9b9e1bc2.tar.bz2 linux-0416605548766782acee60701b5c712e9b9e1bc2.zip |
hso: fix rx parsing logic when skb allocation fails
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/usb/hso.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c index 6b8efcabb816..9cdfb3fe9c15 100644 --- a/drivers/net/usb/hso.c +++ b/drivers/net/usb/hso.c @@ -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 |