Merge tag 'v4.3-rc2' into topic/drm-misc
[firefly-linux-kernel-4.4.55.git] / drivers / bluetooth / hci_h4.c
index 57faddc53645a33fdb7e9e334ffddbadd7c1cb98..eec3f28e4bb9ffba89498a19e16e3a3320a164f2 100644 (file)
@@ -223,8 +223,7 @@ struct sk_buff *h4_recv_buf(struct hci_dev *hdev, struct sk_buff *skb,
                        switch ((&pkts[i])->lsize) {
                        case 0:
                                /* No variable data length */
-                               (&pkts[i])->recv(hdev, skb);
-                               skb = NULL;
+                               dlen = 0;
                                break;
                        case 1:
                                /* Single octet variable length */
@@ -252,6 +251,12 @@ struct sk_buff *h4_recv_buf(struct hci_dev *hdev, struct sk_buff *skb,
                                kfree_skb(skb);
                                return ERR_PTR(-EILSEQ);
                        }
+
+                       if (!dlen) {
+                               /* No more data, complete frame */
+                               (&pkts[i])->recv(hdev, skb);
+                               skb = NULL;
+                       }
                } else {
                        /* Complete frame */
                        (&pkts[i])->recv(hdev, skb);