| From 7a91d3f02b04b2fb18c2dfa8b6c4e5a40a2753f5 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Jacek=20Bu=C5=82atek?= <jacekx.bulatek@intel.com> |
| Date: Fri, 26 Feb 2021 13:19:29 -0800 |
| Subject: ice: Fix for dereference of NULL pointer |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Jacek Bułatek <jacekx.bulatek@intel.com> |
| |
| commit 7a91d3f02b04b2fb18c2dfa8b6c4e5a40a2753f5 upstream. |
| |
| Add handling of allocation fault for ice_vsi_list_map_info. |
| |
| Also *fi should not be NULL pointer, it is a reference to raw |
| data field, so remove this variable and use the reference |
| directly. |
| |
| Fixes: 9daf8208dd4d ("ice: Add support for switch filter programming") |
| Signed-off-by: Jacek Bułatek <jacekx.bulatek@intel.com> |
| Co-developed-by: Haiyue Wang <haiyue.wang@intel.com> |
| Signed-off-by: Haiyue Wang <haiyue.wang@intel.com> |
| Tested-by: Tony Brelinski <tonyx.brelinski@intel.com> |
| Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/intel/ice/ice_switch.c | 12 +++++++----- |
| 1 file changed, 7 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/net/ethernet/intel/ice/ice_switch.c |
| +++ b/drivers/net/ethernet/intel/ice/ice_switch.c |
| @@ -1279,6 +1279,9 @@ ice_add_update_vsi_list(struct ice_hw *h |
| ice_create_vsi_list_map(hw, &vsi_handle_arr[0], 2, |
| vsi_list_id); |
| |
| + if (!m_entry->vsi_list_info) |
| + return ICE_ERR_NO_MEMORY; |
| + |
| /* If this entry was large action then the large action needs |
| * to be updated to point to FWD to VSI list |
| */ |
| @@ -2266,6 +2269,7 @@ ice_vsi_uses_fltr(struct ice_fltr_mgmt_l |
| return ((fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI && |
| fm_entry->fltr_info.vsi_handle == vsi_handle) || |
| (fm_entry->fltr_info.fltr_act == ICE_FWD_TO_VSI_LIST && |
| + fm_entry->vsi_list_info && |
| (test_bit(vsi_handle, fm_entry->vsi_list_info->vsi_map)))); |
| } |
| |
| @@ -2338,14 +2342,12 @@ ice_add_to_vsi_fltr_list(struct ice_hw * |
| return ICE_ERR_PARAM; |
| |
| list_for_each_entry(fm_entry, lkup_list_head, list_entry) { |
| - struct ice_fltr_info *fi; |
| - |
| - fi = &fm_entry->fltr_info; |
| - if (!fi || !ice_vsi_uses_fltr(fm_entry, vsi_handle)) |
| + if (!ice_vsi_uses_fltr(fm_entry, vsi_handle)) |
| continue; |
| |
| status = ice_add_entry_to_vsi_fltr_list(hw, vsi_handle, |
| - vsi_list_head, fi); |
| + vsi_list_head, |
| + &fm_entry->fltr_info); |
| if (status) |
| return status; |
| } |