diff options
Diffstat (limited to 'net/dcb/dcbnl.c')
| -rw-r--r-- | net/dcb/dcbnl.c | 8 | 
1 files changed, 4 insertions, 4 deletions
| diff --git a/net/dcb/dcbnl.c b/net/dcb/dcbnl.c index 70989e672304..1b588e23cf80 100644 --- a/net/dcb/dcbnl.c +++ b/net/dcb/dcbnl.c @@ -1662,8 +1662,8 @@ static int dcb_doit(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)  	struct nlmsghdr *reply_nlh = NULL;  	const struct reply_func *fn; -	if (!net_eq(net, &init_net)) -		return -EINVAL; +	if ((nlh->nlmsg_type == RTM_SETDCB) && !capable(CAP_NET_ADMIN)) +		return -EPERM;  	ret = nlmsg_parse(nlh, sizeof(*dcb), tb, DCB_ATTR_MAX,  			  dcbnl_rtnl_policy); @@ -1681,7 +1681,7 @@ static int dcb_doit(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)  	if (!tb[DCB_ATTR_IFNAME])  		return -EINVAL; -	netdev = dev_get_by_name(&init_net, nla_data(tb[DCB_ATTR_IFNAME])); +	netdev = dev_get_by_name(net, nla_data(tb[DCB_ATTR_IFNAME]));  	if (!netdev)  		return -ENODEV; @@ -1705,7 +1705,7 @@ static int dcb_doit(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)  	nlmsg_end(reply_skb, reply_nlh); -	ret = rtnl_unicast(reply_skb, &init_net, portid); +	ret = rtnl_unicast(reply_skb, net, portid);  out:  	dev_put(netdev);  	return ret; |