mlxsw: core: Unpublish devlink parameters during reload
The devlink parameter "acl_region_rehash_interval" is a runtime parameter whose value is stored in a dynamically allocated memory. While reloading the driver, this memory is freed and then allocated again. A use-after-free might happen if during this time frame someone tries to retrieve its value. Since commit070c63f20f
("net: devlink: allow to change namespaces during reload") the use-after-free can be reliably triggered when reloading the driver into a namespace, as after freeing the memory (via reload_down() callback) all the parameters are notified. Fix this by unpublishing and then re-publishing the parameters during reload. Fixes:98bbf70c1c
("mlxsw: spectrum: add "acl_region_rehash_interval" devlink param") Fixes:7c62cfb8c5
("devlink: publish params only after driver init is done") Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c63b096894
commit
b7265a0df8
@ -1186,7 +1186,7 @@ __mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
|
||||
if (err)
|
||||
goto err_thermal_init;
|
||||
|
||||
if (mlxsw_driver->params_register && !reload)
|
||||
if (mlxsw_driver->params_register)
|
||||
devlink_params_publish(devlink);
|
||||
|
||||
return 0;
|
||||
@ -1259,7 +1259,7 @@ void mlxsw_core_bus_device_unregister(struct mlxsw_core *mlxsw_core,
|
||||
return;
|
||||
}
|
||||
|
||||
if (mlxsw_core->driver->params_unregister && !reload)
|
||||
if (mlxsw_core->driver->params_unregister)
|
||||
devlink_params_unpublish(devlink);
|
||||
mlxsw_thermal_fini(mlxsw_core->thermal);
|
||||
mlxsw_hwmon_fini(mlxsw_core->hwmon);
|
||||
|
Loading…
Reference in New Issue
Block a user