net/ice/base: fix first profile mask
authorWenjun Wu <wenjun1.wu@intel.com>
Mon, 21 Jun 2021 08:59:23 +0000 (16:59 +0800)
committerQi Zhang <qi.z.zhang@intel.com>
Sun, 4 Jul 2021 14:57:21 +0000 (16:57 +0200)
Since each PF does not share the same structure space, the first
mask value should start at 0 instead of hw->pf_id * per_pf to avoid
address overflow. Otherwise, address space will overlap when
masks.first + masks.count > ICE_PROF_MASK_COUNT, and it may lead to
unexpected variable assignment, which causes segmentation fault.

Fixes: 9467486f179f ("net/ice/base: enable masking for RSS and FD field vectors")
Cc: stable@dpdk.org
Signed-off-by: Wenjun Wu <wenjun1.wu@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
drivers/net/ice/base/ice_flex_pipe.c

index b3cea73..829d88b 100644 (file)
@@ -3432,7 +3432,7 @@ static void ice_init_prof_masks(struct ice_hw *hw, enum ice_block blk)
        per_pf = ICE_PROF_MASK_COUNT / hw->dev_caps.num_funcs;
 
        hw->blk[blk].masks.count = per_pf;
-       hw->blk[blk].masks.first = hw->pf_id * per_pf;
+       hw->blk[blk].masks.first = 0;
 
        ice_memset(hw->blk[blk].masks.masks, 0,
                   sizeof(hw->blk[blk].masks.masks), ICE_NONDMA_MEM);