aboutsummaryrefslogtreecommitdiffstats
path: root/net/dccp/input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/dccp/input.c')
-rw-r--r--net/dccp/input.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/dccp/input.c b/net/dccp/input.c
index d28d46bff6ab..85d6c879383d 100644
--- a/net/dccp/input.c
+++ b/net/dccp/input.c
@@ -606,11 +606,13 @@ int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
606 if (sk->sk_state == DCCP_LISTEN) { 606 if (sk->sk_state == DCCP_LISTEN) {
607 if (dh->dccph_type == DCCP_PKT_REQUEST) { 607 if (dh->dccph_type == DCCP_PKT_REQUEST) {
608 /* It is possible that we process SYN packets from backlog, 608 /* It is possible that we process SYN packets from backlog,
609 * so we need to make sure to disable BH right there. 609 * so we need to make sure to disable BH and RCU right there.
610 */ 610 */
611 rcu_read_lock();
611 local_bh_disable(); 612 local_bh_disable();
612 acceptable = inet_csk(sk)->icsk_af_ops->conn_request(sk, skb) >= 0; 613 acceptable = inet_csk(sk)->icsk_af_ops->conn_request(sk, skb) >= 0;
613 local_bh_enable(); 614 local_bh_enable();
615 rcu_read_unlock();
614 if (!acceptable) 616 if (!acceptable)
615 return 1; 617 return 1;
616 consume_skb(skb); 618 consume_skb(skb);