Message ID | 4D3831FA.2010806@trash.net |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, Jan 20, 2011 at 02:00:42PM +0100, Patrick McHardy wrote: > Fix a few semantic problems with the new IFLA_GROUP attribute. > > Vlad, could you please give this is a try to see whether it > still behaves as expected? > commit e4b31d565a45e06ed2e51a005f5c00ff1d00725c > Author: Patrick McHardy <kaber@trash.net> > Date: Thu Jan 20 13:55:25 2011 +0100 > > rtnetlink: fix link attribute validation with IFLA_GROUP > > rtnl_group_changelink() is invoked by rtnl_newlink() before the link > attributes have been validated. Additionally the group changes are > performed even if NLM_F_CREATE is specified and a new link is > created, while more reasonable semantics would be to set the group > value on the newly created link. > > Fix both problems by moving the rtnl_group_changelink() invocation > down to the handling of non-existant links without NLM_F_CREATE() > and add a dev_set_group() call to rtnl_create_link(). > > Signed-off-by: Patrick McHardy <kaber@trash.net> Acked-by: Vlad Dogaru <ddvlad@rosedu.org> This looks OK and behaves as before. Thanks for taking the time to look through it, the new semantics do seem saner. There is a slight difference, though: in the (yet unapplied) iproute2 patch, ifi_index is set to -1 and kernel space checks that it is <= 0; your patch checks for == 0. I will update the iproute2 patches with setting ifi_index to 0 (and other changes) and resubmit them. -- 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
From: Vlad Dogaru <ddvlad@rosedu.org> Date: Thu, 20 Jan 2011 18:09:10 +0200 > On Thu, Jan 20, 2011 at 02:00:42PM +0100, Patrick McHardy wrote: >> Fix a few semantic problems with the new IFLA_GROUP attribute. >> >> Vlad, could you please give this is a try to see whether it >> still behaves as expected? > >> commit e4b31d565a45e06ed2e51a005f5c00ff1d00725c >> Author: Patrick McHardy <kaber@trash.net> >> Date: Thu Jan 20 13:55:25 2011 +0100 >> >> rtnetlink: fix link attribute validation with IFLA_GROUP >> >> rtnl_group_changelink() is invoked by rtnl_newlink() before the link >> attributes have been validated. Additionally the group changes are >> performed even if NLM_F_CREATE is specified and a new link is >> created, while more reasonable semantics would be to set the group >> value on the newly created link. >> >> Fix both problems by moving the rtnl_group_changelink() invocation >> down to the handling of non-existant links without NLM_F_CREATE() >> and add a dev_set_group() call to rtnl_create_link(). >> >> Signed-off-by: Patrick McHardy <kaber@trash.net> > > Acked-by: Vlad Dogaru <ddvlad@rosedu.org> Applied, thanks everyone. -- 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 --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index a0b2eeb..310eb80 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -1548,6 +1548,8 @@ struct net_device *rtnl_create_link(struct net *src_net, struct net *net, set_operstate(dev, nla_get_u8(tb[IFLA_OPERSTATE])); if (tb[IFLA_LINKMODE]) dev->link_mode = nla_get_u8(tb[IFLA_LINKMODE]); + if (tb[IFLA_GROUP]) + dev_set_group(dev, nla_get_u32(tb[IFLA_GROUP])); return dev; @@ -1606,10 +1608,6 @@ replay: else { if (ifname[0]) dev = __dev_get_by_name(net, ifname); - else if (tb[IFLA_GROUP]) - return rtnl_group_changelink(net, - nla_get_u32(tb[IFLA_GROUP]), - ifm, tb); else dev = NULL; } @@ -1676,8 +1674,13 @@ replay: return do_setlink(dev, ifm, tb, ifname, modified); } - if (!(nlh->nlmsg_flags & NLM_F_CREATE)) + if (!(nlh->nlmsg_flags & NLM_F_CREATE)) { + if (ifm->ifi_index == 0 && tb[IFLA_GROUP]) + return rtnl_group_changelink(net, + nla_get_u32(tb[IFLA_GROUP]), + ifm, tb); return -ENODEV; + } if (ifm->ifi_index) return -EOPNOTSUPP;
Fix a few semantic problems with the new IFLA_GROUP attribute. Vlad, could you please give this is a try to see whether it still behaves as expected? commit e4b31d565a45e06ed2e51a005f5c00ff1d00725c Author: Patrick McHardy <kaber@trash.net> Date: Thu Jan 20 13:55:25 2011 +0100 rtnetlink: fix link attribute validation with IFLA_GROUP rtnl_group_changelink() is invoked by rtnl_newlink() before the link attributes have been validated. Additionally the group changes are performed even if NLM_F_CREATE is specified and a new link is created, while more reasonable semantics would be to set the group value on the newly created link. Fix both problems by moving the rtnl_group_changelink() invocation down to the handling of non-existant links without NLM_F_CREATE() and add a dev_set_group() call to rtnl_create_link(). Signed-off-by: Patrick McHardy <kaber@trash.net>