Commit def689fc authored by Vasiliy Kovalev's avatar Vasiliy Kovalev Committed by Paolo Abeni
Browse files

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: 687125b5 ("devlink: split out core code")
Signed-off-by: default avatarVasiliy Kovalev <kovalev@altlinux.org>
Link: https://lore.kernel.org/r/20240215203400.29976-1-kovalev@altlinux.org


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 5559cea2
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -529,14 +529,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;