Commit 5d521846 authored by Vasiliy Kovalev's avatar Vasiliy Kovalev Committed by Jialin Zhang
Browse files

devlink: fix possible use-after-free and memory leaks in devlink_init()

mainline inclusion
from mainline-v6.8-rc6
commit def689fc26b9a9622d2e2cb0c4933dd3b1c8071c
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I9E2M1
CVE: CVE-2024-26734

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=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: 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>
Conflicts:
	net/core/devlink.c
Signed-off-by: default avatarJialin Zhang <zhangjialin11@huawei.com>
parent b05f2de3
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -10340,10 +10340,14 @@ static int __init devlink_init(void)
{
	int err;

	err = genl_register_family(&devlink_nl_family);
	err = register_pernet_subsys(&devlink_pernet_ops);
	if (err)
		goto out;
	err = register_pernet_subsys(&devlink_pernet_ops);
	err = genl_register_family(&devlink_nl_family);
	if (!err)
		return 0;

	unregister_pernet_subsys(&devlink_pernet_ops);

out:
	WARN_ON(err);