llc: do not use sk_eat_skb()
[sfrench/cifs-2.6.git] / net / llc / af_llc.c
index 1beeea9549fa6ec1f7b0e5f9af8ff3250a316f59..b99e73a7e7e0f2b4959b279e3aecbadf29667d55 100644 (file)
@@ -730,7 +730,6 @@ static int llc_ui_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
        struct sk_buff *skb = NULL;
        struct sock *sk = sock->sk;
        struct llc_sock *llc = llc_sk(sk);
-       unsigned long cpu_flags;
        size_t copied = 0;
        u32 peek_seq = 0;
        u32 *seq, skb_len;
@@ -855,9 +854,8 @@ static int llc_ui_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
                        goto copy_uaddr;
 
                if (!(flags & MSG_PEEK)) {
-                       spin_lock_irqsave(&sk->sk_receive_queue.lock, cpu_flags);
-                       sk_eat_skb(sk, skb);
-                       spin_unlock_irqrestore(&sk->sk_receive_queue.lock, cpu_flags);
+                       skb_unlink(skb, &sk->sk_receive_queue);
+                       kfree_skb(skb);
                        *seq = 0;
                }
 
@@ -878,9 +876,8 @@ copy_uaddr:
                llc_cmsg_rcv(msg, skb);
 
        if (!(flags & MSG_PEEK)) {
-               spin_lock_irqsave(&sk->sk_receive_queue.lock, cpu_flags);
-               sk_eat_skb(sk, skb);
-               spin_unlock_irqrestore(&sk->sk_receive_queue.lock, cpu_flags);
+               skb_unlink(skb, &sk->sk_receive_queue);
+               kfree_skb(skb);
                *seq = 0;
        }