All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next v2 0/2] netns: simple cleanups
@ 2020-01-15 15:36 Guillaume Nault
  2020-01-15 15:36 ` [PATCH net-next v2 1/2] netns: Parse *_PID and *_FD netlink attributes as signed integers Guillaume Nault
  2020-01-15 15:36 ` [PATCH net-next v2 2/2] netns: constify exported functions Guillaume Nault
  0 siblings, 2 replies; 5+ messages in thread
From: Guillaume Nault @ 2020-01-15 15:36 UTC (permalink / raw)
  To: David Miller, Jakub Kicinski; +Cc: netdev, Nicolas Dichtel

A few things to cleanup, found while working on net_namespace.c:
  * align netlink attribute parsing policy with their real usage,
  * some constification.

v2: also update IFLA_NET_NS_* in rtnetlink.c.

Guillaume Nault (2):
  netns: Parse *_PID and *_FD netlink attributes as signed integers
  netns: constify exported functions

 include/net/net_namespace.h | 10 +++++-----
 net/core/net_namespace.c    | 18 +++++++++---------
 net/core/rtnetlink.c        |  8 ++++----
 3 files changed, 18 insertions(+), 18 deletions(-)

-- 
2.21.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH net-next v2 1/2] netns: Parse *_PID and *_FD netlink attributes as signed integers
  2020-01-15 15:36 [PATCH net-next v2 0/2] netns: simple cleanups Guillaume Nault
@ 2020-01-15 15:36 ` Guillaume Nault
  2020-01-15 16:25   ` Nicolas Dichtel
  2020-01-15 15:36 ` [PATCH net-next v2 2/2] netns: constify exported functions Guillaume Nault
  1 sibling, 1 reply; 5+ messages in thread
From: Guillaume Nault @ 2020-01-15 15:36 UTC (permalink / raw)
  To: David Miller, Jakub Kicinski; +Cc: netdev, Nicolas Dichtel

These attributes represent signed values (file descriptors and PIDs).
Make that clear in nla_policy.

Signed-off-by: Guillaume Nault <gnault@redhat.com>
---
 net/core/net_namespace.c | 12 ++++++------
 net/core/rtnetlink.c     |  8 ++++----
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 6412c1fbfcb5..85c565571c1c 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -706,8 +706,8 @@ static struct pernet_operations __net_initdata net_ns_ops = {
 static const struct nla_policy rtnl_net_policy[NETNSA_MAX + 1] = {
 	[NETNSA_NONE]		= { .type = NLA_UNSPEC },
 	[NETNSA_NSID]		= { .type = NLA_S32 },
-	[NETNSA_PID]		= { .type = NLA_U32 },
-	[NETNSA_FD]		= { .type = NLA_U32 },
+	[NETNSA_PID]		= { .type = NLA_S32 },
+	[NETNSA_FD]		= { .type = NLA_S32 },
 	[NETNSA_TARGET_NSID]	= { .type = NLA_S32 },
 };
 
@@ -731,10 +731,10 @@ static int rtnl_net_newid(struct sk_buff *skb, struct nlmsghdr *nlh,
 	nsid = nla_get_s32(tb[NETNSA_NSID]);
 
 	if (tb[NETNSA_PID]) {
-		peer = get_net_ns_by_pid(nla_get_u32(tb[NETNSA_PID]));
+		peer = get_net_ns_by_pid(nla_get_s32(tb[NETNSA_PID]));
 		nla = tb[NETNSA_PID];
 	} else if (tb[NETNSA_FD]) {
-		peer = get_net_ns_by_fd(nla_get_u32(tb[NETNSA_FD]));
+		peer = get_net_ns_by_fd(nla_get_s32(tb[NETNSA_FD]));
 		nla = tb[NETNSA_FD];
 	} else {
 		NL_SET_ERR_MSG(extack, "Peer netns reference is missing");
@@ -874,10 +874,10 @@ static int rtnl_net_getid(struct sk_buff *skb, struct nlmsghdr *nlh,
 	if (err < 0)
 		return err;
 	if (tb[NETNSA_PID]) {
-		peer = get_net_ns_by_pid(nla_get_u32(tb[NETNSA_PID]));
+		peer = get_net_ns_by_pid(nla_get_s32(tb[NETNSA_PID]));
 		nla = tb[NETNSA_PID];
 	} else if (tb[NETNSA_FD]) {
-		peer = get_net_ns_by_fd(nla_get_u32(tb[NETNSA_FD]));
+		peer = get_net_ns_by_fd(nla_get_s32(tb[NETNSA_FD]));
 		nla = tb[NETNSA_FD];
 	} else if (tb[NETNSA_NSID]) {
 		peer = get_net_ns_by_id(net, nla_get_s32(tb[NETNSA_NSID]));
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index 20bc406f3871..9b5419a7bd74 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1794,8 +1794,8 @@ static const struct nla_policy ifla_policy[IFLA_MAX+1] = {
 	[IFLA_OPERSTATE]	= { .type = NLA_U8 },
 	[IFLA_LINKMODE]		= { .type = NLA_U8 },
 	[IFLA_LINKINFO]		= { .type = NLA_NESTED },
-	[IFLA_NET_NS_PID]	= { .type = NLA_U32 },
-	[IFLA_NET_NS_FD]	= { .type = NLA_U32 },
+	[IFLA_NET_NS_PID]	= { .type = NLA_S32 },
+	[IFLA_NET_NS_FD]	= { .type = NLA_S32 },
 	/* IFLA_IFALIAS is a string, but policy is set to NLA_BINARY to
 	 * allow 0-length string (needed to remove an alias).
 	 */
@@ -2118,9 +2118,9 @@ struct net *rtnl_link_get_net(struct net *src_net, struct nlattr *tb[])
 	 * network namespace we are talking about.
 	 */
 	if (tb[IFLA_NET_NS_PID])
-		net = get_net_ns_by_pid(nla_get_u32(tb[IFLA_NET_NS_PID]));
+		net = get_net_ns_by_pid(nla_get_s32(tb[IFLA_NET_NS_PID]));
 	else if (tb[IFLA_NET_NS_FD])
-		net = get_net_ns_by_fd(nla_get_u32(tb[IFLA_NET_NS_FD]));
+		net = get_net_ns_by_fd(nla_get_s32(tb[IFLA_NET_NS_FD]));
 	else
 		net = get_net(src_net);
 	return net;
-- 
2.21.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH net-next v2 2/2] netns: constify exported functions
  2020-01-15 15:36 [PATCH net-next v2 0/2] netns: simple cleanups Guillaume Nault
  2020-01-15 15:36 ` [PATCH net-next v2 1/2] netns: Parse *_PID and *_FD netlink attributes as signed integers Guillaume Nault
@ 2020-01-15 15:36 ` Guillaume Nault
  1 sibling, 0 replies; 5+ messages in thread
From: Guillaume Nault @ 2020-01-15 15:36 UTC (permalink / raw)
  To: David Miller, Jakub Kicinski; +Cc: netdev, Nicolas Dichtel

Mark function parameters as 'const' where possible.

Signed-off-by: Guillaume Nault <gnault@redhat.com>
Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
---
 include/net/net_namespace.h | 10 +++++-----
 net/core/net_namespace.c    |  6 +++---
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
index b8ceaf0cd997..854d39ef1ca3 100644
--- a/include/net/net_namespace.h
+++ b/include/net/net_namespace.h
@@ -347,9 +347,9 @@ static inline struct net *read_pnet(const possible_net_t *pnet)
 #endif
 
 int peernet2id_alloc(struct net *net, struct net *peer, gfp_t gfp);
-int peernet2id(struct net *net, struct net *peer);
-bool peernet_has_id(struct net *net, struct net *peer);
-struct net *get_net_ns_by_id(struct net *net, int id);
+int peernet2id(const struct net *net, struct net *peer);
+bool peernet_has_id(const struct net *net, struct net *peer);
+struct net *get_net_ns_by_id(const struct net *net, int id);
 
 struct pernet_operations {
 	struct list_head list;
@@ -427,7 +427,7 @@ static inline void unregister_net_sysctl_table(struct ctl_table_header *header)
 }
 #endif
 
-static inline int rt_genid_ipv4(struct net *net)
+static inline int rt_genid_ipv4(const struct net *net)
 {
 	return atomic_read(&net->ipv4.rt_genid);
 }
@@ -459,7 +459,7 @@ static inline void rt_genid_bump_all(struct net *net)
 	rt_genid_bump_ipv6(net);
 }
 
-static inline int fnhe_genid(struct net *net)
+static inline int fnhe_genid(const struct net *net)
 {
 	return atomic_read(&net->fnhe_genid);
 }
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 85c565571c1c..fd0727670f34 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -268,7 +268,7 @@ int peernet2id_alloc(struct net *net, struct net *peer, gfp_t gfp)
 EXPORT_SYMBOL_GPL(peernet2id_alloc);
 
 /* This function returns, if assigned, the id of a peer netns. */
-int peernet2id(struct net *net, struct net *peer)
+int peernet2id(const struct net *net, struct net *peer)
 {
 	int id;
 
@@ -283,12 +283,12 @@ EXPORT_SYMBOL(peernet2id);
 /* This function returns true is the peer netns has an id assigned into the
  * current netns.
  */
-bool peernet_has_id(struct net *net, struct net *peer)
+bool peernet_has_id(const struct net *net, struct net *peer)
 {
 	return peernet2id(net, peer) >= 0;
 }
 
-struct net *get_net_ns_by_id(struct net *net, int id)
+struct net *get_net_ns_by_id(const struct net *net, int id)
 {
 	struct net *peer;
 
-- 
2.21.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next v2 1/2] netns: Parse *_PID and *_FD netlink attributes as signed integers
  2020-01-15 15:36 ` [PATCH net-next v2 1/2] netns: Parse *_PID and *_FD netlink attributes as signed integers Guillaume Nault
@ 2020-01-15 16:25   ` Nicolas Dichtel
  2020-01-16 11:23     ` Guillaume Nault
  0 siblings, 1 reply; 5+ messages in thread
From: Nicolas Dichtel @ 2020-01-15 16:25 UTC (permalink / raw)
  To: Guillaume Nault, David Miller, Jakub Kicinski; +Cc: netdev

Le 15/01/2020 à 16:36, Guillaume Nault a écrit :
> These attributes represent signed values (file descriptors and PIDs).
> Make that clear in nla_policy.
After more check, I also find these one:
$ git grep "NET.*_PID\|NET.*_FD" include/uapi/linux/
include/uapi/linux/devlink.h:   DEVLINK_ATTR_NETNS_FD,                  /* u32 */
include/uapi/linux/devlink.h:   DEVLINK_ATTR_NETNS_PID,                 /* u32 */
include/uapi/linux/gtp.h:       GTPA_NET_NS_FD,
include/uapi/linux/if_link.h:   IFLA_NET_NS_PID,
include/uapi/linux/if_link.h:   IFLA_NET_NS_FD,
include/uapi/linux/net_namespace.h:     NETNSA_PID,
include/uapi/linux/net_namespace.h:     NETNSA_FD,
include/uapi/linux/nl80211.h:   NL80211_ATTR_NETNS_FD,

Regards,
Nicolas

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net-next v2 1/2] netns: Parse *_PID and *_FD netlink attributes as signed integers
  2020-01-15 16:25   ` Nicolas Dichtel
@ 2020-01-16 11:23     ` Guillaume Nault
  0 siblings, 0 replies; 5+ messages in thread
From: Guillaume Nault @ 2020-01-16 11:23 UTC (permalink / raw)
  To: Nicolas Dichtel; +Cc: David Miller, Jakub Kicinski, netdev

On Wed, Jan 15, 2020 at 05:25:42PM +0100, Nicolas Dichtel wrote:
> Le 15/01/2020 à 16:36, Guillaume Nault a écrit :
> > These attributes represent signed values (file descriptors and PIDs).
> > Make that clear in nla_policy.
> After more check, I also find these one:
> $ git grep "NET.*_PID\|NET.*_FD" include/uapi/linux/
> include/uapi/linux/devlink.h:   DEVLINK_ATTR_NETNS_FD,                  /* u32 */
> include/uapi/linux/devlink.h:   DEVLINK_ATTR_NETNS_PID,                 /* u32 */
> include/uapi/linux/gtp.h:       GTPA_NET_NS_FD,
> include/uapi/linux/if_link.h:   IFLA_NET_NS_PID,
> include/uapi/linux/if_link.h:   IFLA_NET_NS_FD,
> include/uapi/linux/net_namespace.h:     NETNSA_PID,
> include/uapi/linux/net_namespace.h:     NETNSA_FD,
> include/uapi/linux/nl80211.h:   NL80211_ATTR_NETNS_FD,
> 
Well, this is really going beyond the scope of the original patch set.
But ok, let's drop this series. I'll repost the constification as stand
alone patch and will audit the netns attribute parsing when I'll get
more time.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-01-16 11:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-15 15:36 [PATCH net-next v2 0/2] netns: simple cleanups Guillaume Nault
2020-01-15 15:36 ` [PATCH net-next v2 1/2] netns: Parse *_PID and *_FD netlink attributes as signed integers Guillaume Nault
2020-01-15 16:25   ` Nicolas Dichtel
2020-01-16 11:23     ` Guillaume Nault
2020-01-15 15:36 ` [PATCH net-next v2 2/2] netns: constify exported functions Guillaume Nault

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.