]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/net/ethernet/intel/ice/ice.h
ice: Add a boundary check in ice_xsk_umem()
[linux.git] / drivers / net / ethernet / intel / ice / ice.h
index f972dce8aebbc425616f6cf2c2bfd18bbfe3a52d..cb10abb14e11c7749127ca7e1356fe3e719992d6 100644 (file)
@@ -174,6 +174,8 @@ struct ice_sw {
        struct ice_pf *pf;
        u16 sw_id;              /* switch ID for this switch */
        u16 bridge_mode;        /* VEB/VEPA/Port Virtualizer */
+       struct ice_vsi *dflt_vsi;       /* default VSI for this switch */
+       u8 dflt_vsi_ena:1;      /* true if above dflt_vsi is enabled */
 };
 
 enum ice_state {
@@ -275,6 +277,7 @@ struct ice_vsi {
        u8 current_isup:1;               /* Sync 'link up' logging */
        u8 stat_offsets_loaded:1;
        u8 vlan_ena:1;
+       u16 num_vlan;
 
        /* queue information */
        u8 tx_mapping_mode;              /* ICE_MAP_MODE_[CONTIG|SCATTER] */
@@ -462,12 +465,13 @@ static inline void ice_set_ring_xdp(struct ice_ring *ring)
 static inline struct xdp_umem *ice_xsk_umem(struct ice_ring *ring)
 {
        struct xdp_umem **umems = ring->vsi->xsk_umems;
-       int qid = ring->q_index;
+       u16 qid = ring->q_index;
 
        if (ice_ring_is_xdp(ring))
                qid -= ring->vsi->num_xdp_txq;
 
-       if (!umems || !umems[qid] || !ice_is_xdp_ena_vsi(ring->vsi))
+       if (qid >= ring->vsi->num_xsk_umems || !umems || !umems[qid] ||
+           !ice_is_xdp_ena_vsi(ring->vsi))
                return NULL;
 
        return umems[qid];