Bluetooth: Allow unsegmented SDU retries on sock_queue_rcv_skb failure
authorRuiyi Zhang <Ruiyi.Zhang@Atheros.com>
Fri, 13 May 2011 05:07:52 +0000 (13:07 +0800)
committermgross <mark.gross@intel.com>
Wed, 9 Nov 2011 20:09:58 +0000 (12:09 -0800)
In L2CAP_SDU_UNSEGMENTED case, if sock_queue_rcv_skb returns error,
l2cap_ertm_reassembly_sdu should not return 0 so as to insert the
skb into BUSY_QUEUE for later retries.

Signed-off-by: Ruiyi Zhang <Ruiyi.Zhang@Atheros.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
net/bluetooth/l2cap_core.c

index 8b87947..64c0016 100644 (file)
@@ -2929,11 +2929,7 @@ static int l2cap_ertm_reassembly_sdu(struct l2cap_chan *chan, struct sk_buff *sk
                if (chan->conn_state & L2CAP_CONN_SAR_SDU)
                        goto drop;
 
-               err = sock_queue_rcv_skb(chan->sk, skb);
-               if (!err)
-                       return err;
-
-               break;
+               return sock_queue_rcv_skb(chan->sk, skb);
 
        case L2CAP_SDU_START:
                if (chan->conn_state & L2CAP_CONN_SAR_SDU)