net: introduce lockdep_is_held and update various places to use it
The socket is either locked if we hold the slock spin_lock for lock_sock_fast and unlock_sock_fast or we own the lock (sk_lock.owned != 0). Check for this and at the same time improve that the current thread/cpu is really holding the lock. Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
61881cfb5a
commit
1e1d04e678
@ -157,7 +157,7 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
||||
|
||||
nexthop = daddr = usin->sin_addr.s_addr;
|
||||
inet_opt = rcu_dereference_protected(inet->inet_opt,
|
||||
sock_owned_by_user(sk));
|
||||
lockdep_sock_is_held(sk));
|
||||
if (inet_opt && inet_opt->opt.srr) {
|
||||
if (!daddr)
|
||||
return -EINVAL;
|
||||
@ -882,8 +882,7 @@ struct tcp_md5sig_key *tcp_md5_do_lookup(const struct sock *sk,
|
||||
|
||||
/* caller either holds rcu_read_lock() or socket lock */
|
||||
md5sig = rcu_dereference_check(tp->md5sig_info,
|
||||
sock_owned_by_user(sk) ||
|
||||
lockdep_is_held((spinlock_t *)&sk->sk_lock.slock));
|
||||
lockdep_sock_is_held(sk));
|
||||
if (!md5sig)
|
||||
return NULL;
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
@ -928,8 +927,7 @@ int tcp_md5_do_add(struct sock *sk, const union tcp_md5_addr *addr,
|
||||
}
|
||||
|
||||
md5sig = rcu_dereference_protected(tp->md5sig_info,
|
||||
sock_owned_by_user(sk) ||
|
||||
lockdep_is_held(&sk->sk_lock.slock));
|
||||
lockdep_sock_is_held(sk));
|
||||
if (!md5sig) {
|
||||
md5sig = kmalloc(sizeof(*md5sig), gfp);
|
||||
if (!md5sig)
|
||||
|
Reference in New Issue
Block a user