]> git.itanic.dy.fi Git - linux-stable/blobdiff - drivers/net/ethernet/intel/ice/ice_txrx.c
ice: Fix ice_xdp_xmit() when XDP TX queue number is not sufficient
[linux-stable] / drivers / net / ethernet / intel / ice / ice_txrx.c
index 836dce8407124f2f200f36fab42412f80009469e..97453d1dfafedc501d303ed646f4011edfe732d1 100644 (file)
@@ -610,7 +610,7 @@ ice_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames,
        if (test_bit(ICE_VSI_DOWN, vsi->state))
                return -ENETDOWN;
 
-       if (!ice_is_xdp_ena_vsi(vsi) || queue_index >= vsi->num_xdp_txq)
+       if (!ice_is_xdp_ena_vsi(vsi))
                return -ENXIO;
 
        if (unlikely(flags & ~XDP_XMIT_FLAGS_MASK))
@@ -621,6 +621,9 @@ ice_xdp_xmit(struct net_device *dev, int n, struct xdp_frame **frames,
                xdp_ring = vsi->xdp_rings[queue_index];
                spin_lock(&xdp_ring->tx_lock);
        } else {
+               /* Generally, should not happen */
+               if (unlikely(queue_index >= vsi->num_xdp_txq))
+                       return -ENXIO;
                xdp_ring = vsi->xdp_rings[queue_index];
        }