> -----Original Message-----
> From: Intel-wired-lan <[email protected]> On Behalf Of Jacob 
> Keller
> Sent: 07 July 2026 05:01
> To: Nguyen, Anthony L <[email protected]>; Kitszel, Przemyslaw 
> <[email protected]>
> Cc: [email protected]; [email protected]; Keller, Jacob E 
> <[email protected]>
> Subject: [Intel-wired-lan] [PATCH iwl-net v2] ice: add missing xa_destroy for 
> sched_node_ids
>
> Commit 16dfa49406bc ("ice: Introduce new parameters in ice_sched_node") added 
> a sched_node_ids xarray to the port info structure, but never called 
> xa_destroy on it.
>
> Since xarrays can allocate internal memory, this can result in a memory leak 
> even if every element in the xarray has been removed.
>
> The xarray is currently embedded in the port_info structure. This appears to 
> have been done because its use is within functions that take the port_info as 
> a primary argument.
>
> However, this complicates managing the lifecycle of the field. The port_info 
> structure is allocated in ice_init_hw() using devm, and it is not released 
> until the devm cleanup when the driver is unloaded.
>
> The ice_init_hw() function is called in many places, including devlink 
> reload, and possibly during DDP load after updating the Tx scheduler layout.
>
> Adding a call of xa_destroy to the ice_deinit_hw() causes Sashiko to raise 
> multiple concerns due to potential ordering issues and possible ways that 
> port_info could be a dangling reference.
>
> To handle this, move the sched_node_ids out of port_info and into the hw 
> structure. All users of the array already have a pointer to hw anyways, and 
> there is only one sched_node_ids per adapter. While here, remove the overly 
> verbose comment explaining the nature of the sched_node_ids xarray.
>
> Add the missing xa_destroy to the cleanup path and to ice_deinit_hw(), 
> ensuring that we properly release the xarray memory.
>
> This was caught by Sashiko during development of unrelated code.
>
> Fixes: 16dfa49406bc ("ice: Introduce new parameters in ice_sched_node")
> Signed-off-by: Jacob Keller <[email protected]>
> ---
> Changes in v2:
> - Move sched_node_ids out of port_into into hw.
> - Link to v1: 
> https://patch.msgid.link/[email protected]
> ---
> drivers/net/ethernet/intel/ice/ice_type.h   | 2 +-
> drivers/net/ethernet/intel/ice/ice_common.c | 9 ++++++---  
> drivers/net/ethernet/intel/ice/ice_sched.c  | 4 ++--
> 3 files changed, 9 insertions(+), 6 deletions(-)
>

Tested-by: Rinitha S <[email protected]> (A Contingent worker at Intel)

Reply via email to