Message ID | 477e5649-87e3-44d9-8226-010b9822e649@web.de (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | netlink: Adjustments for __netlink_kernel_create() | expand |
On Sun, 31 Dec 2023 18:42:30 +0100 Markus Elfring <Markus.Elfring@web.de> wrote: > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Sun, 31 Dec 2023 17:26:41 +0100 > > The kfree() function was called in one case by > the __netlink_kernel_create() function during error handling > even if the passed variable contained a null pointer. > This issue was detected by using the Coccinelle software. > > Thus use another label. > > Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> NAK Please look at something else, calling kfree(NULL) is correct and the preferred solution.
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 4ed8ffd58ff3..c3f88015cacf 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -2042,7 +2042,7 @@ __netlink_kernel_create(struct net *net, int unit, struct module *module, listeners = kzalloc(sizeof(*listeners) + NLGRPSZ(groups), GFP_KERNEL); if (!listeners) - goto out_sock_release; + goto out_netlink_release_sock; sk->sk_data_ready = netlink_data_ready; if (cfg && cfg->input) @@ -2076,6 +2076,7 @@ __netlink_kernel_create(struct net *net, int unit, struct module *module, out_sock_release: kfree(listeners); +out_netlink_release_sock: netlink_kernel_release(sk); return NULL;