diff options
Diffstat (limited to 'net/sctp')
-rw-r--r-- | net/sctp/socket.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 2a3c0e08a090..e6926cb19420 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -4368,15 +4368,11 @@ static struct sk_buff *sctp_skb_recv_datagram(struct sock *sk, int flags, | |||
4368 | * However, this function was corrent in any case. 8) | 4368 | * However, this function was corrent in any case. 8) |
4369 | */ | 4369 | */ |
4370 | if (flags & MSG_PEEK) { | 4370 | if (flags & MSG_PEEK) { |
4371 | unsigned long cpu_flags; | 4371 | spin_lock_bh(&sk->sk_receive_queue.lock); |
4372 | |||
4373 | sctp_spin_lock_irqsave(&sk->sk_receive_queue.lock, | ||
4374 | cpu_flags); | ||
4375 | skb = skb_peek(&sk->sk_receive_queue); | 4372 | skb = skb_peek(&sk->sk_receive_queue); |
4376 | if (skb) | 4373 | if (skb) |
4377 | atomic_inc(&skb->users); | 4374 | atomic_inc(&skb->users); |
4378 | sctp_spin_unlock_irqrestore(&sk->sk_receive_queue.lock, | 4375 | spin_unlock_bh(&sk->sk_receive_queue.lock); |
4379 | cpu_flags); | ||
4380 | } else { | 4376 | } else { |
4381 | skb = skb_dequeue(&sk->sk_receive_queue); | 4377 | skb = skb_dequeue(&sk->sk_receive_queue); |
4382 | } | 4378 | } |