Please add btsdio fixes for error path to stable release. Some sdio devices are not so stable so we are hitting this often and it leaves kernel in bad state.
Bluetooth: Fix TX error path in btsdio driver - is needed for 2.6.27 and 2.6.28 kernel
btsdio: free sk_buff with kfree_skb - is needed for 2.6.27 kernel
Commit messages as appears upstream:
commit 7644d63d1348ec044ccd8f775fefe5eb7cbcac69
Author: Tomas Winkler <[email protected]>
Date: Sun Nov 30 12:17:18 2008 +0100
Bluetooth: Fix TX error path in btsdio driver
This patch fixes accumulating of the header in case packet was requeued
in the error path.
Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: Marcel Holtmann <[email protected]>
commit cbfd24a75f98fe731547d3bc995f3a1f1fed6b20
Author: Sergio Luis <[email protected]>
Date: Sun Oct 26 23:08:48 2008 -0700
btsdio: free sk_buff with kfree_skb
free sk_buff with kfree_skb, instead of kree
Signed-off-by: Sergio Luis <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
---------------------------------------------------------------------
Intel Israel (74) Limited
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
This patch fixes accumulating of the header in case packet was requeued
in the error path.
Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: Marcel Holtmann <[email protected]>
---
drivers/bluetooth/btsdio.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/bluetooth/btsdio.c b/drivers/bluetooth/btsdio.c
index cda6c7c..f2ada0c 100644
--- a/drivers/bluetooth/btsdio.c
+++ b/drivers/bluetooth/btsdio.c
@@ -91,6 +91,7 @@ static int btsdio_tx_packet(struct btsdio_data *data, struct sk_buff *skb)
err = sdio_writesb(data->func, REG_TDAT, skb->data, skb->len);
if (err < 0) {
+ skb_pull(skb, 4);
sdio_writeb(data->func, 0x01, REG_PC_WRT, NULL);
return err;
}
--
1.6.0.6
---------------------------------------------------------------------
Intel Israel (74) Limited
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
From: Sergio Luis <[email protected]>
free sk_buff with kfree_skb, instead of kree
Signed-off-by: Sergio Luis <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
---
drivers/bluetooth/btsdio.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/bluetooth/btsdio.c b/drivers/bluetooth/btsdio.c
index 58630cc..cda6c7c 100644
--- a/drivers/bluetooth/btsdio.c
+++ b/drivers/bluetooth/btsdio.c
@@ -152,7 +152,7 @@ static int btsdio_rx_packet(struct btsdio_data *data)
err = sdio_readsb(data->func, skb->data, REG_RDAT, len - 4);
if (err < 0) {
- kfree(skb);
+ kfree_skb(skb);
return err;
}
--
1.6.0.6
---------------------------------------------------------------------
Intel Israel (74) Limited
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.