lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Fri, 11 Aug 2023 08:44:28 +0200
From: Jiri Pirko <jiri@...nulli.us>
To: Jakub Kicinski <kuba@...nel.org>
Cc: davem@...emloft.net, netdev@...r.kernel.org, edumazet@...gle.com,
	pabeni@...hat.com, johannes@...solutions.net
Subject: Re: [PATCH net-next v2 07/10] genetlink: add genlmsg_iput() API

Fri, Aug 11, 2023 at 01:38:42AM CEST, kuba@...nel.org wrote:
>Add some APIs and helpers required for convenient construction
>of replies and notifications based on struct genl_info.
>
>Signed-off-by: Jakub Kicinski <kuba@...nel.org>
>---
> include/net/genetlink.h | 54 ++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 53 insertions(+), 1 deletion(-)
>
>diff --git a/include/net/genetlink.h b/include/net/genetlink.h
>index 6b858c4cba5b..e18a4c0d69ee 100644
>--- a/include/net/genetlink.h
>+++ b/include/net/genetlink.h
>@@ -113,7 +113,7 @@ struct genl_info {
> 	struct netlink_ext_ack *extack;
> };
> 
>-static inline struct net *genl_info_net(struct genl_info *info)
>+static inline struct net *genl_info_net(const struct genl_info *info)
> {
> 	return read_pnet(&info->_net);
> }
>@@ -270,6 +270,32 @@ genl_info_dump(struct netlink_callback *cb)
> 	return &genl_dumpit_info(cb)->info;
> }
> 
>+/**
>+ * genl_info_init_ntf() - initialize genl_info for notifications
>+ * @info:   genl_info struct to set up
>+ * @family: pointer to the genetlink family
>+ * @cmd:    command to be used in the notification
>+ *
>+ * Initialize a locally declared struct genl_info to pass to various APIs.
>+ * Intended to be used when creating notifications.
>+ */
>+static inline void
>+genl_info_init_ntf(struct genl_info *info, const struct genl_family *family,
>+		   u8 cmd)
>+{
>+	struct genlmsghdr *hdr = (void *) &info->user_ptr[0];
>+
>+	memset(info, 0, sizeof(*info));
>+	info->family = family;
>+	info->genlhdr = hdr;
>+	hdr->cmd = cmd;
>+}

This looks good. Please see my comment to genl_info_is_ntf() in the
reply to the last patch. Anyway, if you decide to keep it, I'm fine:

Reviewed-by: Jiri Pirko <jiri@...dia.com>


>+
>+static inline bool genl_info_is_ntf(const struct genl_info *info)
>+{
>+	return !info->nlhdr;
>+}
>+
> int genl_register_family(struct genl_family *family);
> int genl_unregister_family(const struct genl_family *family);
> void genl_notify(const struct genl_family *family, struct sk_buff *skb,
>@@ -278,6 +304,32 @@ void genl_notify(const struct genl_family *family, struct sk_buff *skb,
> void *genlmsg_put(struct sk_buff *skb, u32 portid, u32 seq,
> 		  const struct genl_family *family, int flags, u8 cmd);
> 
>+static inline void *
>+__genlmsg_iput(struct sk_buff *skb, const struct genl_info *info, int flags)
>+{
>+	return genlmsg_put(skb, info->snd_portid, info->snd_seq, info->family,
>+			   flags, info->genlhdr->cmd);
>+}
>+
>+/**
>+ * genlmsg_iput - start genetlink message based on genl_info
>+ * @skb: skb in which message header will be placed
>+ * @info: genl_info as provided to do/dump handlers
>+ *
>+ * Convenience wrapper which starts a genetlink message based on
>+ * information in user request. @info should be either the struct passed
>+ * by genetlink core to do/dump handlers (when constructing replies to
>+ * such requests) or a struct initialized by genl_info_init_ntf()
>+ * when constructing notifications.
>+ *
>+ * Returns pointer to new genetlink header.
>+ */
>+static inline void *
>+genlmsg_iput(struct sk_buff *skb, const struct genl_info *info)
>+{
>+	return __genlmsg_iput(skb, info, 0);
>+}
>+
> /**
>  * genlmsg_nlhdr - Obtain netlink header from user specified header
>  * @user_hdr: user header as returned from genlmsg_put()
>-- 
>2.41.0
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ