From: Leyi Rong Date: Wed, 19 Jun 2019 15:18:22 +0000 (+0800) Subject: net/ice/base: protect list add with lock X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=421d265c2a8beebc4a70009424dce7c37cfc51c7;p=dpdk.git net/ice/base: protect list add with lock Function ice_add_rule_internal needs to call ice_create_pkt_fwd_rule with lock held because it uses the LIST_ADD to modify the filter rule list. It needs to be protected when modified. Signed-off-by: Tarun Singh Signed-off-by: Paul M Stillwell Jr Signed-off-by: Leyi Rong Acked-by: Qi Zhang --- diff --git a/drivers/net/ice/base/ice_switch.c b/drivers/net/ice/base/ice_switch.c index 830025e332..988de36201 100644 --- a/drivers/net/ice/base/ice_switch.c +++ b/drivers/net/ice/base/ice_switch.c @@ -2288,14 +2288,15 @@ ice_add_rule_internal(struct ice_hw *hw, u8 recp_id, m_entry = ice_find_rule_entry(hw, recp_id, new_fltr); if (!m_entry) { - ice_release_lock(rule_lock); - return ice_create_pkt_fwd_rule(hw, f_entry); + status = ice_create_pkt_fwd_rule(hw, f_entry); + goto exit_add_rule_internal; } cur_fltr = &m_entry->fltr_info; status = ice_add_update_vsi_list(hw, m_entry, cur_fltr, new_fltr); - ice_release_lock(rule_lock); +exit_add_rule_internal: + ice_release_lock(rule_lock); return status; }