[v2] net/ice: fix possible null pointer dereference

Message ID 1556073822-50250-1-git-send-email-wenzhuo.lu@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers
Series [v2] net/ice: fix possible null pointer dereference |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS

Commit Message

Wenzhuo Lu April 24, 2019, 2:43 a.m. UTC
  Fix the issues reported by Coverity check, "Null-checking
vsi suggests that it may be null, but it has already been
dereferenced on all paths leading to the check."

Coverity issue: 328509
Coverity issue: 328519
Coverity issue: 328523
Fixes: e0dcf94a0d7f ("net/ice: support VLAN ops")
Fixes: ff963bfa7cb1 ("net/ice: support RSS")
Cc: stable@dpdk.org

Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Acked-by: Qiming Yang <qiming.yang@intel.com>
Reviewed-by: Rami Rosen <ramirose@gmail.com>
---
 drivers/net/ice/ice_ethdev.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
  

Comments

Ferruh Yigit April 24, 2019, 3:56 p.m. UTC | #1
On 4/24/2019 3:43 AM, Wenzhuo Lu wrote:
> Fix the issues reported by Coverity check, "Null-checking
> vsi suggests that it may be null, but it has already been
> dereferenced on all paths leading to the check."
> 
> Coverity issue: 328509
> Coverity issue: 328519
> Coverity issue: 328523
> Fixes: e0dcf94a0d7f ("net/ice: support VLAN ops")
> Fixes: ff963bfa7cb1 ("net/ice: support RSS")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
> Acked-by: Qiming Yang <qiming.yang@intel.com>
> Reviewed-by: Rami Rosen <ramirose@gmail.com>

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 0946b19..5cca4a8 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -645,12 +645,14 @@  struct ice_xstats_name_off {
 	struct ice_fltr_list_entry *v_list_itr = NULL;
 	struct ice_vlan_filter *f;
 	struct LIST_HEAD_TYPE list_head;
-	struct ice_hw *hw = ICE_VSI_TO_HW(vsi);
+	struct ice_hw *hw;
 	int ret = 0;
 
 	if (!vsi || vlan_id > ETHER_MAX_VLAN_ID)
 		return -EINVAL;
 
+	hw = ICE_VSI_TO_HW(vsi);
+
 	/* If it's added and configured, return. */
 	f = ice_find_vlan_filter(vsi, vlan_id);
 	if (f) {
@@ -710,7 +712,7 @@  struct ice_xstats_name_off {
 	struct ice_fltr_list_entry *v_list_itr = NULL;
 	struct ice_vlan_filter *f;
 	struct LIST_HEAD_TYPE list_head;
-	struct ice_hw *hw = ICE_VSI_TO_HW(vsi);
+	struct ice_hw *hw;
 	int ret = 0;
 
 	/**
@@ -720,6 +722,8 @@  struct ice_xstats_name_off {
 	if (!vsi || vlan_id == 0 || vlan_id > ETHER_MAX_VLAN_ID)
 		return -EINVAL;
 
+	hw = ICE_VSI_TO_HW(vsi);
+
 	/* Can't find it, return an error */
 	f = ice_find_vlan_filter(vsi, vlan_id);
 	if (!f)
@@ -2553,13 +2557,16 @@  static int ice_macaddr_set(struct rte_eth_dev *dev,
 static int
 ice_set_rss_lut(struct ice_vsi *vsi, uint8_t *lut, uint16_t lut_size)
 {
-	struct ice_pf *pf = ICE_VSI_TO_PF(vsi);
-	struct ice_hw *hw = ICE_VSI_TO_HW(vsi);
+	struct ice_pf *pf;
+	struct ice_hw *hw;
 	int ret;
 
 	if (!vsi || !lut)
 		return -EINVAL;
 
+	pf = ICE_VSI_TO_PF(vsi);
+	hw = ICE_VSI_TO_HW(vsi);
+
 	if (pf->flags & ICE_FLAG_RSS_AQ_CAPABLE) {
 		ret = ice_aq_set_rss_lut(hw, vsi->idx, TRUE,
 					 lut, lut_size);