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)
committerGustavo F. Padovan <padovan@profusion.mobi>
Wed, 8 Jun 2011 19:58:15 +0000 (16:58 -0300)
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 e64a1c2df238d3fc0aac368075b8b0fd3bbb6917..6b59005fba95497ede782700329abcd335fd6362 100644 (file)
@@ -2928,11 +2928,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)