ixgbe: don't clear_bit on xdp_ring->state if xdp_ring is null
authorColin Ian King <colin.king@canonical.com>
Thu, 4 Oct 2018 17:57:32 +0000 (18:57 +0100)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 7 Nov 2018 17:47:00 +0000 (09:47 -0800)
There is an earlier check to see if xdp_ring is null when configuring
the tx ring, so assuming that it can still be null, the clearing of
the xdp_ring->state currently could end up with a null pointer
dereference.  Fix this by only clearing the bit if xdp_ring is not null.

Detected by CoverityScan, CID#1473795 ("Dereference after null check")

Fixes: 024aa5800f32 ("ixgbe: added Rx/Tx ring disable/enable functions")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

index 113b38e0defbf547920a5f2fadb63428e50e6dc1..aeda1834e66aa5181966a5a91abf6caedfde030d 100644 (file)
@@ -10517,7 +10517,8 @@ void ixgbe_txrx_ring_enable(struct ixgbe_adapter *adapter, int ring)
        ixgbe_configure_rx_ring(adapter, rx_ring);
 
        clear_bit(__IXGBE_TX_DISABLED, &tx_ring->state);
-       clear_bit(__IXGBE_TX_DISABLED, &xdp_ring->state);
+       if (xdp_ring)
+               clear_bit(__IXGBE_TX_DISABLED, &xdp_ring->state);
 }
 
 /**