projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'v4.3-rc2' into topic/drm-misc
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
bluetooth
/
hci_h4.c
diff --git
a/drivers/bluetooth/hci_h4.c
b/drivers/bluetooth/hci_h4.c
index 57faddc53645a33fdb7e9e334ffddbadd7c1cb98..eec3f28e4bb9ffba89498a19e16e3a3320a164f2 100644
(file)
--- a/
drivers/bluetooth/hci_h4.c
+++ b/
drivers/bluetooth/hci_h4.c
@@
-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 */
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 */
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);
}
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);
} else {
/* Complete frame */
(&pkts[i])->recv(hdev, skb);