mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
devlink: fix possible use-after-free and memory leaks in devlink_init()
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: 687125b579
("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>
This commit is contained in:
parent
5559cea2d5
commit
def689fc26
@ -529,14 +529,20 @@ static int __init devlink_init(void)
|
|||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
err = genl_register_family(&devlink_nl_family);
|
|
||||||
if (err)
|
|
||||||
goto out;
|
|
||||||
err = register_pernet_subsys(&devlink_pernet_ops);
|
err = register_pernet_subsys(&devlink_pernet_ops);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
err = genl_register_family(&devlink_nl_family);
|
||||||
|
if (err)
|
||||||
|
goto out_unreg_pernet_subsys;
|
||||||
err = register_netdevice_notifier(&devlink_port_netdevice_nb);
|
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:
|
out:
|
||||||
WARN_ON(err);
|
WARN_ON(err);
|
||||||
return err;
|
return err;
|
||||||
|
Loading…
Reference in New Issue
Block a user