[SRU][M][PATCH 1/1] devlink: fix possible use-after-free and memory leaks in devlink_init()
Bethany Jamison
bethany.jamison at canonical.com
Tue Apr 16 19:26:47 UTC 2024
From: Vasiliy Kovalev <kovalev at altlinux.org>
[ 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 at altlinux.org>
Link: https://lore.kernel.org/r/20240215203400.29976-1-kovalev@altlinux.org
Signed-off-by: Paolo Abeni <pabeni at redhat.com>
Signed-off-by: Sasha Levin <sashal at kernel.org>
(cherry picked from commit 919092bd5482b7070ae66d1daef73b600738f3a2 linux-6.6.y)
CVE-2024-26734
Signed-off-by: Bethany Jamison <bethany.jamison at canonical.com>
---
net/devlink/core.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/net/devlink/core.c b/net/devlink/core.c
index c23ebabadc526..cc599b5961984 100644
--- a/net/devlink/core.c
+++ b/net/devlink/core.c
@@ -302,14 +302,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;
--
2.34.1
More information about the kernel-team
mailing list