mirror of https://gitee.com/openkylin/linux.git
net: use proper lockdep annotation in __sk_dst_set()
__sk_dst_set() must be called while we own the socket. We can get proper lockdep coverage using lockdep_sock_is_held() and rcu_dereference_protected() Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
337e63923a
commit
95964c6de7
|
@ -1780,11 +1780,8 @@ __sk_dst_set(struct sock *sk, struct dst_entry *dst)
|
||||||
|
|
||||||
sk_tx_queue_clear(sk);
|
sk_tx_queue_clear(sk);
|
||||||
sk->sk_dst_pending_confirm = 0;
|
sk->sk_dst_pending_confirm = 0;
|
||||||
/*
|
old_dst = rcu_dereference_protected(sk->sk_dst_cache,
|
||||||
* This can be called while sk is owned by the caller only,
|
lockdep_sock_is_held(sk));
|
||||||
* with no state that can be checked in a rcu_dereference_check() cond
|
|
||||||
*/
|
|
||||||
old_dst = rcu_dereference_raw(sk->sk_dst_cache);
|
|
||||||
rcu_assign_pointer(sk->sk_dst_cache, dst);
|
rcu_assign_pointer(sk->sk_dst_cache, dst);
|
||||||
dst_release(old_dst);
|
dst_release(old_dst);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue