diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-10-27 19:33:13 +0100 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-10-27 19:33:13 +0100 | 
| commit | c2a552197106b45d0d801d5b8a6be47563a700df (patch) | |
| tree | 61d42c1887b843170874bfec3cacc45211ed916a /net/core/net_namespace.c | |
| parent | 9905f32aefbe3d9cb2d24c3bd9c882397eaf3842 (diff) | |
| parent | d6d5df1db6e9d7f8f76d2911707f7d5877251b02 (diff) | |
Merge 5.4-rc5 into tty-next
We want the tty/serial fix in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/core/net_namespace.c')
| -rw-r--r-- | net/core/net_namespace.c | 17 | 
1 files changed, 11 insertions, 6 deletions
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index a0e0d298c991..6d3e4821b02d 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -245,7 +245,8 @@ static int __peernet2id(struct net *net, struct net *peer)  	return __peernet2id_alloc(net, peer, &no);  } -static void rtnl_net_notifyid(struct net *net, int cmd, int id); +static void rtnl_net_notifyid(struct net *net, int cmd, int id, u32 portid, +			      struct nlmsghdr *nlh);  /* This function returns the id of a peer netns. If no id is assigned, one will   * be allocated and returned.   */ @@ -268,7 +269,7 @@ int peernet2id_alloc(struct net *net, struct net *peer)  	id = __peernet2id_alloc(net, peer, &alloc);  	spin_unlock_bh(&net->nsid_lock);  	if (alloc && id >= 0) -		rtnl_net_notifyid(net, RTM_NEWNSID, id); +		rtnl_net_notifyid(net, RTM_NEWNSID, id, 0, NULL);  	if (alive)  		put_net(peer);  	return id; @@ -532,7 +533,7 @@ static void unhash_nsid(struct net *net, struct net *last)  			idr_remove(&tmp->netns_ids, id);  		spin_unlock_bh(&tmp->nsid_lock);  		if (id >= 0) -			rtnl_net_notifyid(tmp, RTM_DELNSID, id); +			rtnl_net_notifyid(tmp, RTM_DELNSID, id, 0, NULL);  		if (tmp == last)  			break;  	} @@ -764,7 +765,8 @@ static int rtnl_net_newid(struct sk_buff *skb, struct nlmsghdr *nlh,  	err = alloc_netid(net, peer, nsid);  	spin_unlock_bh(&net->nsid_lock);  	if (err >= 0) { -		rtnl_net_notifyid(net, RTM_NEWNSID, err); +		rtnl_net_notifyid(net, RTM_NEWNSID, err, NETLINK_CB(skb).portid, +				  nlh);  		err = 0;  	} else if (err == -ENOSPC && nsid >= 0) {  		err = -EEXIST; @@ -1051,9 +1053,12 @@ end:  	return err < 0 ? err : skb->len;  } -static void rtnl_net_notifyid(struct net *net, int cmd, int id) +static void rtnl_net_notifyid(struct net *net, int cmd, int id, u32 portid, +			      struct nlmsghdr *nlh)  {  	struct net_fill_args fillargs = { +		.portid = portid, +		.seq = nlh ? nlh->nlmsg_seq : 0,  		.cmd = cmd,  		.nsid = id,  	}; @@ -1068,7 +1073,7 @@ static void rtnl_net_notifyid(struct net *net, int cmd, int id)  	if (err < 0)  		goto err_out; -	rtnl_notify(msg, net, 0, RTNLGRP_NSID, NULL, 0); +	rtnl_notify(msg, net, portid, RTNLGRP_NSID, nlh, 0);  	return;  err_out:  | 
