Skip to content

Commit def689f

Browse files
kovalev0Paolo Abeni
authored and
Paolo Abeni
committed
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: 687125b ("devlink: split out core code") Signed-off-by: Vasiliy Kovalev <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
1 parent 5559cea commit def689f

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

net/devlink/core.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -529,14 +529,20 @@ static int __init devlink_init(void)
529529
{
530530
int err;
531531

532-
err = genl_register_family(&devlink_nl_family);
533-
if (err)
534-
goto out;
535532
err = register_pernet_subsys(&devlink_pernet_ops);
536533
if (err)
537534
goto out;
535+
err = genl_register_family(&devlink_nl_family);
536+
if (err)
537+
goto out_unreg_pernet_subsys;
538538
err = register_netdevice_notifier(&devlink_port_netdevice_nb);
539+
if (!err)
540+
return 0;
541+
542+
genl_unregister_family(&devlink_nl_family);
539543

544+
out_unreg_pernet_subsys:
545+
unregister_pernet_subsys(&devlink_pernet_ops);
540546
out:
541547
WARN_ON(err);
542548
return err;

0 commit comments

Comments
 (0)