projects
/
platform
/
kernel
/
linux-thead.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
9e02973
)
devlink: fix possible use-after-free and memory leaks in devlink_init()
author
Vasiliy Kovalev
<kovalev@altlinux.org>
Thu, 15 Feb 2024 20:34:00 +0000
(23:34 +0300)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Fri, 1 Mar 2024 12:35:07 +0000
(13:35 +0100)
[ 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@altlinux.org>
Link:
https://lore.kernel.org/r/20240215203400.29976-1-kovalev@altlinux.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/devlink/core.c
patch
|
blob
|
history
diff --git
a/net/devlink/core.c
b/net/devlink/core.c
index 6cec4afb01fbd88f0758cf80c6838bafa96d2c7e..451f2bc141a0529c706637800566db4cc091f0cd 100644
(file)
--- a/
net/devlink/core.c
+++ b/
net/devlink/core.c
@@
-308,14
+308,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;