devlink: fix possible use-after-free and memory leaks in devlink_init()
[ Upstream commit def689fc26b9a9622d2e2cb0c4933dd3b1c8071c ] The pernet operations structure for the subsystem must be registered before registering the generic netlink family. Make an unregister in case of unsuccessful registration. Fixes: 687125b5799c ("devlink: split out core code") Signed-off-by: Vasiliy Kovalev <kovalev@altlinux.org> Link: https://lore.kernel.org/r/20240215203400.29976-1-kovalev@altlinux.org Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
9e02973dbc
commit
919092bd54
@ -308,14 +308,20 @@ static int __init devlink_init(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = genl_register_family(&devlink_nl_family);
|
||||
if (err)
|
||||
goto out;
|
||||
err = register_pernet_subsys(&devlink_pernet_ops);
|
||||
if (err)
|
||||
goto out;
|
||||
err = genl_register_family(&devlink_nl_family);
|
||||
if (err)
|
||||
goto out_unreg_pernet_subsys;
|
||||
err = register_netdevice_notifier(&devlink_port_netdevice_nb);
|
||||
if (!err)
|
||||
return 0;
|
||||
|
||||
genl_unregister_family(&devlink_nl_family);
|
||||
|
||||
out_unreg_pernet_subsys:
|
||||
unregister_pernet_subsys(&devlink_pernet_ops);
|
||||
out:
|
||||
WARN_ON(err);
|
||||
return err;
|
||||
|
Loading…
x
Reference in New Issue
Block a user