diff mbox

[bluetooth-next,v2] ieee802154: fix netns settings

Message ID 1422457112-4377-1-git-send-email-nicolas.dichtel@6wind.com
State Awaiting Upstream, archived
Delegated to: David Miller
Headers show

Commit Message

Nicolas Dichtel Jan. 28, 2015, 2:58 p.m. UTC
6LoWPAN currently doesn't supports x-netns and works only in init_net.

With this patch, we ensure that:
 - the wpan interface cannot be moved to another netns;
 - the 6lowpan interface cannot be moved to another netns;
 - the wpan interface is in the same netns than the 6lowpan interface;
 - the 6lowpan interface is in init_net.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
---

Note: only compile tested.

v2: update patch title
    rebase the patch on bluetooth-next
    update flag features in cfg802154_netdev_notifier_call

 net/ieee802154/6lowpan/core.c | 6 ++++--
 net/ieee802154/core.c         | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

Comments

Alexander Aring Feb. 5, 2015, 9:10 a.m. UTC | #1
On Wed, Jan 28, 2015 at 09:36:53PM +0100, Alexander Aring wrote:
> On Wed, Jan 28, 2015 at 03:58:32PM +0100, Nicolas Dichtel wrote:
> > 6LoWPAN currently doesn't supports x-netns and works only in init_net.
> > 
> > With this patch, we ensure that:
> >  - the wpan interface cannot be moved to another netns;
> >  - the 6lowpan interface cannot be moved to another netns;
> >  - the wpan interface is in the same netns than the 6lowpan interface;
> >  - the 6lowpan interface is in init_net.
> > 
> > Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
> 
> Acked-by: Alexander Aring <alex.aring@gmail.com>
> 
> Marcel, can you please queue this for bluetooth-next?
> 

ping.

- Alex
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Marcel Holtmann Feb. 5, 2015, 4:03 p.m. UTC | #2
Hi Alex,

>>> 6LoWPAN currently doesn't supports x-netns and works only in init_net.
>>> 
>>> With this patch, we ensure that:
>>> - the wpan interface cannot be moved to another netns;
>>> - the 6lowpan interface cannot be moved to another netns;
>>> - the wpan interface is in the same netns than the 6lowpan interface;
>>> - the 6lowpan interface is in init_net.
>>> 
>>> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
>> 
>> Acked-by: Alexander Aring <alex.aring@gmail.com>
>> 
>> Marcel, can you please queue this for bluetooth-next?
>> 
> 
> ping.

I completely missed this one and it is not even showing up in my local archive. Care to resend it with your ack attached to it.

Regards

Marcel

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/ieee802154/6lowpan/core.c b/net/ieee802154/6lowpan/core.c
index 055fbb71ba6f..dfd3c6007f60 100644
--- a/net/ieee802154/6lowpan/core.c
+++ b/net/ieee802154/6lowpan/core.c
@@ -126,6 +126,7 @@  static void lowpan_setup(struct net_device *dev)
 	dev->header_ops		= &lowpan_header_ops;
 	dev->ml_priv		= &lowpan_mlme;
 	dev->destructor		= free_netdev;
+	dev->features		|= NETIF_F_NETNS_LOCAL;
 }
 
 static int lowpan_validate(struct nlattr *tb[], struct nlattr *data[])
@@ -148,10 +149,11 @@  static int lowpan_newlink(struct net *src_net, struct net_device *dev,
 
 	pr_debug("adding new link\n");
 
-	if (!tb[IFLA_LINK])
+	if (!tb[IFLA_LINK] ||
+	    !net_eq(dev_net(dev), &init_net))
 		return -EINVAL;
 	/* find and hold real wpan device */
-	real_dev = dev_get_by_index(src_net, nla_get_u32(tb[IFLA_LINK]));
+	real_dev = dev_get_by_index(dev_net(dev), nla_get_u32(tb[IFLA_LINK]));
 	if (!real_dev)
 		return -ENODEV;
 	if (real_dev->type != ARPHRD_IEEE802154) {
diff --git a/net/ieee802154/core.c b/net/ieee802154/core.c
index 18bc7e738507..888d0991c761 100644
--- a/net/ieee802154/core.c
+++ b/net/ieee802154/core.c
@@ -225,6 +225,7 @@  static int cfg802154_netdev_notifier_call(struct notifier_block *nb,
 	switch (state) {
 		/* TODO NETDEV_DEVTYPE */
 	case NETDEV_REGISTER:
+		dev->features |= NETIF_F_NETNS_LOCAL;
 		wpan_dev->identifier = ++rdev->wpan_dev_id;
 		list_add_rcu(&wpan_dev->list, &rdev->wpan_dev_list);
 		rdev->devlist_generation++;