diff options
author | Eric Dumazet <edumazet@google.com> | 2018-10-02 12:35:05 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-10-02 15:52:12 -0700 |
commit | 2ab2ddd301a22ca3c5f0b743593e4ad2953dfa53 (patch) | |
tree | 3ec72a50a6be78a4bc8eb73d8c9bd14df798aa26 /include | |
parent | ff58e2df62ce29d0552278c290ae494b30fe0c6f (diff) | |
download | linux-stable-2ab2ddd301a22ca3c5f0b743593e4ad2953dfa53.tar.gz linux-stable-2ab2ddd301a22ca3c5f0b743593e4ad2953dfa53.tar.bz2 linux-stable-2ab2ddd301a22ca3c5f0b743593e4ad2953dfa53.zip |
inet: make sure to grab rcu_read_lock before using ireq->ireq_opt
Timer handlers do not imply rcu_read_lock(), so my recent fix
triggered a LOCKDEP warning when SYNACK is retransmit.
Lets add rcu_read_lock()/rcu_read_unlock() pairs around ireq->ireq_opt
usages instead of guessing what is done by callers, since it is
not worth the pain.
Get rid of ireq_opt_deref() helper since it hides the logic
without real benefit, since it is now a standard rcu_dereference().
Fixes: 1ad98e9d1bdf ("tcp/dccp: fix lockdep issue when SYN is backlogged")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/inet_sock.h | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index a8cd5cf9ff5b..a80fd0ac4563 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h @@ -130,11 +130,6 @@ static inline int inet_request_bound_dev_if(const struct sock *sk, return sk->sk_bound_dev_if; } -static inline struct ip_options_rcu *ireq_opt_deref(const struct inet_request_sock *ireq) -{ - return rcu_dereference(ireq->ireq_opt); -} - struct inet_cork { unsigned int flags; __be32 addr; |