ibmvnic: Check for NULL skb's in NAPI poll routine
authorThomas Falcon <tlfalcon@linux.vnet.ibm.com>
Tue, 20 Feb 2018 02:12:57 +0000 (20:12 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:51:59 +0000 (07:51 +0200)
[ Upstream commit abe27a885d9e6575e663a16176dabc58ce9d7188 ]

After introduction of commit d0869c0071e4, there were some instances of
RX queue entries from a previous session (before the device was closed
and reopened) returned to the NAPI polling routine. Since the corresponding
socket buffers were freed, this resulted in a panic on reopen. Include
a check for a NULL skb here to avoid this.

Fixes: d0869c0071e4 ("ibmvnic: Clean RX pool buffers during device close")
Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/ibm/ibmvnic.c

index 6db5fc2920300973291fc9e583c277e4f19d7254..6ac4dd5bb30a572546496f23611ee961a518287f 100644 (file)
@@ -1668,6 +1668,11 @@ restart_poll:
                        dev_kfree_skb_any(rx_buff->skb);
                        remove_buff_from_pool(adapter, rx_buff);
                        continue;
+               } else if (!rx_buff->skb) {
+                       /* free the entry */
+                       next->rx_comp.first = 0;
+                       remove_buff_from_pool(adapter, rx_buff);
+                       continue;
                }
 
                length = be32_to_cpu(next->rx_comp.len);