[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20231116164822.427485-6-jiri@resnulli.us>
Date: Thu, 16 Nov 2023 17:48:17 +0100
From: Jiri Pirko <jiri@...nulli.us>
To: netdev@...r.kernel.org
Cc: kuba@...nel.org,
pabeni@...hat.com,
davem@...emloft.net,
edumazet@...gle.com,
jacob.e.keller@...el.com,
jhs@...atatu.com,
johannes@...solutions.net,
andriy.shevchenko@...ux.intel.com,
amritha.nambiar@...el.com,
sdf@...gle.com
Subject: [patch net-next v2 5/9] genetlink: implement release callback and free sk_user_data there
From: Jiri Pirko <jiri@...dia.com>
If any generic netlink family would like to allocate data store the
pointer to sk_user_data, there is no way to do cleanup in the family
code.
Assume that kfree() is good for now, as the only user introduced by the
follow-up patch (devlink) will use kzalloc() for the allocation of
the memory pointed by a pointer stored in sk_user_data. If later on
this needs to be implemented per-family, a callback is going
to be needed. Until then (if ever), do this in a simple way.
Signed-off-by: Jiri Pirko <jiri@...dia.com>
---
net/netlink/genetlink.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
index 92ef5ed2e7b0..905c5a167f53 100644
--- a/net/netlink/genetlink.c
+++ b/net/netlink/genetlink.c
@@ -1699,12 +1699,18 @@ static int genl_bind(struct net *net, int group)
return ret;
}
+static void genl_release(struct sock *sk, unsigned long *groups)
+{
+ kfree(sk->sk_user_data);
+}
+
static int __net_init genl_pernet_init(struct net *net)
{
struct netlink_kernel_cfg cfg = {
.input = genl_rcv,
.flags = NL_CFG_F_NONROOT_RECV,
.bind = genl_bind,
+ .release = genl_release,
};
/* we'll bump the group number right afterwards */
--
2.41.0
Powered by blists - more mailing lists