mirror of
https://github.com/torvalds/linux.git
synced 2026-10-23 23:51:02 +02:00
ice: fix use-after-free in dynamic port cleanup
ice_dealloc_dynamic_port() uses dyn_port->vsi->idx to erase the dynamic
port from pf->dyn_ports. However, it frees the VSI before reading the
index for the erase, resulting in a use-after-free.
Follow the reverse of the allocation order in ice_alloc_dynamic_port()
by erasing the xarray entry before freeing the VSI.
Fixes: eda69d654c ("ice: add basic devlink subfunctions support")
Cc: stable@vger.kernel.org
Signed-off-by: Xuanqiang Luo <luoxuanqiang@kylinos.cn>
Reviewed-by: Marcin Szycik <marcin.szycik@linux.intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Tested-by: Patryk Holda <patryk.holda@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Link: https://patch.msgid.link/20260928230429.495442-3-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
8b1f0af1fd
commit
1402fc67d2
|
|
@ -590,8 +590,8 @@ static void ice_dealloc_dynamic_port(struct ice_dynamic_port *dyn_port)
|
|||
|
||||
xa_erase(&pf->sf_nums, devlink_port->attrs.pci_sf.sf);
|
||||
ice_eswitch_detach_sf(pf, dyn_port);
|
||||
ice_vsi_free(dyn_port->vsi);
|
||||
xa_erase(&pf->dyn_ports, dyn_port->vsi->idx);
|
||||
ice_vsi_free(dyn_port->vsi);
|
||||
kfree(dyn_port);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user