mlxsw: core: Unpublish devlink parameters during reload
authorJiri Pirko <jiri@mellanox.com>
Wed, 30 Oct 2019 09:04:22 +0000 (11:04 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 30 Oct 2019 19:02:52 +0000 (12:02 -0700)
commitb7265a0df82c1716bf788096217083ed65a8bb14
treefae8e5df83fc59aac8e382d721d0a8f7c821ce42
parentc63b0968946b2d72178a92793bcc9439e19b385f
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 commit 070c63f20f6c ("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: 98bbf70c1c41 ("mlxsw: spectrum: add "acl_region_rehash_interval" devlink param")
Fixes: 7c62cfb8c574 ("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>
drivers/net/ethernet/mellanox/mlxsw/core.c