aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index bf1aac315490..188980c58f87 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -6002,11 +6002,13 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb)
6002 if (th->fin) 6002 if (th->fin)
6003 goto discard; 6003 goto discard;
6004 /* It is possible that we process SYN packets from backlog, 6004 /* It is possible that we process SYN packets from backlog,
6005 * so we need to make sure to disable BH right there. 6005 * so we need to make sure to disable BH and RCU right there.
6006 */ 6006 */
6007 rcu_read_lock();
6007 local_bh_disable(); 6008 local_bh_disable();
6008 acceptable = icsk->icsk_af_ops->conn_request(sk, skb) >= 0; 6009 acceptable = icsk->icsk_af_ops->conn_request(sk, skb) >= 0;
6009 local_bh_enable(); 6010 local_bh_enable();
6011 rcu_read_unlock();
6010 6012
6011 if (!acceptable) 6013 if (!acceptable)
6012 return 1; 6014 return 1;