diff options
Diffstat (limited to 'net/ipv4/tcp_input.c')
| -rw-r--r-- | net/ipv4/tcp_input.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 4cf2f7bb2802..47e08c1b5bc3 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -6009,11 +6009,13 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb)  			if (th->fin)  				goto discard;  			/* It is possible that we process SYN packets from backlog, -			 * so we need to make sure to disable BH right there. +			 * so we need to make sure to disable BH and RCU right there.  			 */ +			rcu_read_lock();  			local_bh_disable();  			acceptable = icsk->icsk_af_ops->conn_request(sk, skb) >= 0;  			local_bh_enable(); +			rcu_read_unlock();  			if (!acceptable)  				return 1;  | 
