NFC: llcp: Remove the tx backlog queue
authorSamuel Ortiz <sameo@linux.intel.com>
Fri, 7 Dec 2012 14:55:19 +0000 (15:55 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 9 Jan 2013 23:44:31 +0000 (00:44 +0100)
Not only it was improperly use to queue backlogged RX skbuffs, but it was
also not processed at all.
If the socket receive queue is full we simply drop the incoming packets.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
net/nfc/llcp/llcp.c
net/nfc/llcp/llcp.h
net/nfc/llcp/sock.c

index 6c5971437826a7b5f0b365a956012257efaf373d..003c82fe8bd7d9b16398e5b4cc810ee215d349bf 100644 (file)
@@ -54,7 +54,6 @@ static void nfc_llcp_socket_purge(struct nfc_llcp_sock *sock)
 
        skb_queue_purge(&sock->tx_queue);
        skb_queue_purge(&sock->tx_pending_queue);
-       skb_queue_purge(&sock->tx_backlog_queue);
 
        if (local == NULL)
                return;
@@ -785,7 +784,7 @@ static void nfc_llcp_recv_ui(struct nfc_llcp_local *local,
        skb_pull(skb, LLCP_HEADER_SIZE);
        if (sock_queue_rcv_skb(&llcp_sock->sk, skb)) {
                pr_err("receive queue is full\n");
-               skb_queue_head(&llcp_sock->tx_backlog_queue, skb);
+               kfree_skb(skb);
        }
 
        nfc_llcp_sock_put(llcp_sock);
@@ -980,7 +979,7 @@ static void nfc_llcp_recv_hdlc(struct nfc_llcp_local *local,
                skb_pull(skb, LLCP_HEADER_SIZE + LLCP_SEQUENCE_SIZE);
                if (sock_queue_rcv_skb(&llcp_sock->sk, skb)) {
                        pr_err("receive queue is full\n");
-                       skb_queue_head(&llcp_sock->tx_backlog_queue, skb);
+                       kfree_skb(skb);
                }
        }
 
index 0d62366f8cc3f0e8fe33761d0ec6cc3e45bda677..0eae5c5095047dcd449af0ddba8fd402f79f50e2 100644 (file)
@@ -121,7 +121,6 @@ struct nfc_llcp_sock {
 
        struct sk_buff_head tx_queue;
        struct sk_buff_head tx_pending_queue;
-       struct sk_buff_head tx_backlog_queue;
 
        struct list_head accept_queue;
        struct sock *parent;
index ba1900700958a4613b06a43c035e6feedbb8e898..12ec4879b4ba822bbd1609e37068ee67a008df55 100644 (file)
@@ -808,7 +808,6 @@ struct sock *nfc_llcp_sock_alloc(struct socket *sock, int type, gfp_t gfp)
        llcp_sock->reserved_ssap = LLCP_SAP_MAX;
        skb_queue_head_init(&llcp_sock->tx_queue);
        skb_queue_head_init(&llcp_sock->tx_pending_queue);
-       skb_queue_head_init(&llcp_sock->tx_backlog_queue);
        INIT_LIST_HEAD(&llcp_sock->accept_queue);
 
        if (sock != NULL)
@@ -823,7 +822,6 @@ void nfc_llcp_sock_free(struct nfc_llcp_sock *sock)
 
        skb_queue_purge(&sock->tx_queue);
        skb_queue_purge(&sock->tx_pending_queue);
-       skb_queue_purge(&sock->tx_backlog_queue);
 
        list_del_init(&sock->accept_queue);