[PATCH iwl-next v5 11/12] ice: re-introduce ice_dealloc_flow_entry() helper
From: Marcin Szycik <hidden>
Date: 2026-07-02 11:30:51
Also in:
intel-wired-lan
Subsystem:
intel ethernet drivers, networking drivers, the rest · Maintainers:
Tony Nguyen, Przemek Kitszel, Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds
It was removed in commit ad667d626825 ("ice: remove null checks before
devm_kfree() calls"). Now it's useful again.
Signed-off-by: Marcin Szycik <redacted>
Reviewed-by: Aleksandr Loktionov <redacted>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
---
v5:
* ice_flow_acl_add_scen_entry_sync(), ice_flow_add_entry():
ice_flow_acl_free_act_cntr() additions make more sense in patch adding
this code, move them to that patch. Now this patch is a pure refactor.
v3:
* ice_flow_acl_add_scen_entry_sync(), ice_flow_add_entry(): call
ice_flow_acl_free_act_cntr() in unroll
v2:
* Add this patch
---
drivers/net/ethernet/intel/ice/ice_flow.c | 35 +++++++++++++----------
1 file changed, 20 insertions(+), 15 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_flow.c b/drivers/net/ethernet/intel/ice/ice_flow.c
index e0a1d8463d6f..de751774affc 100644
--- a/drivers/net/ethernet/intel/ice/ice_flow.c
+++ b/drivers/net/ethernet/intel/ice/ice_flow.c@@ -1589,6 +1589,23 @@ ice_flow_find_prof_id(struct ice_hw *hw, enum ice_block blk, u64 prof_id) return NULL; } +/** + * ice_dealloc_flow_entry - Deallocate flow entry memory + * @hw: pointer to the HW struct + * @entry: flow entry to be removed + */ +static void +ice_dealloc_flow_entry(struct ice_hw *hw, struct ice_flow_entry *entry) +{ + if (!entry) + return; + + kfree(entry->entry); + kfree(entry->range_buf); + kfree(entry->acts); + devm_kfree(ice_hw_to_dev(hw), entry); +} + /** * ice_flow_get_hw_prof - return the HW profile for a specific profile ID handle * @hw: pointer to the HW struct
@@ -1757,11 +1774,7 @@ static int ice_flow_rem_entry_sync(struct ice_hw *hw, enum ice_block blk, } list_del(&entry->l_entry); - - kfree(entry->entry); - kfree(entry->range_buf); - kfree(entry->acts); - devm_kfree(ice_hw_to_dev(hw), entry); + ice_dealloc_flow_entry(hw, entry); return 0; }
@@ -2948,10 +2961,7 @@ static int ice_flow_acl_add_scen_entry_sync(struct ice_hw *hw, if (e->acts_cnt && e->acts) ice_flow_acl_free_act_cntr(hw, e->acts, e->acts_cnt); exist->id = e->id; - kfree(e->entry); - kfree(e->range_buf); - kfree(e->acts); - devm_kfree(ice_hw_to_dev(hw), e); + ice_dealloc_flow_entry(hw, e); *entry = exist; } out:
@@ -3075,12 +3085,7 @@ int ice_flow_add_entry(struct ice_hw *hw, enum ice_block blk, u64 prof_id, if (blk == ICE_BLK_ACL && e->acts_cnt && e->acts) ice_flow_acl_free_act_cntr(hw, e->acts, e->acts_cnt); dealloc_entry: - if (e) { - kfree(e->entry); - kfree(e->range_buf); - kfree(e->acts); - devm_kfree(ice_hw_to_dev(hw), e); - } + ice_dealloc_flow_entry(hw, e); return status; }
--
2.49.0