mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
net: add a pre-check of net_ns in sk_change_net()
We do not need to switch the net_ns if the target net_ns the same as the current one, so here we add a pre-check of net_ns to avoid this as David suggested. Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
431a91242d
commit
5812521be0
@ -2252,8 +2252,12 @@ void sock_net_set(struct sock *sk, struct net *net)
|
|||||||
*/
|
*/
|
||||||
static inline void sk_change_net(struct sock *sk, struct net *net)
|
static inline void sk_change_net(struct sock *sk, struct net *net)
|
||||||
{
|
{
|
||||||
put_net(sock_net(sk));
|
struct net *current_net = sock_net(sk);
|
||||||
sock_net_set(sk, hold_net(net));
|
|
||||||
|
if (!net_eq(current_net, net)) {
|
||||||
|
put_net(current_net);
|
||||||
|
sock_net_set(sk, hold_net(net));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct sock *skb_steal_sock(struct sk_buff *skb)
|
static inline struct sock *skb_steal_sock(struct sk_buff *skb)
|
||||||
|
Loading…
Reference in New Issue
Block a user