On Tue, 30 Nov 2010 14:39:57 +0100
Oliver Neukum wrote:
as no good dead goes unpunished, here's a patch to test.
No need to test, the patch is obviously wrong ;-)
(I tested it anyway, just for fun, and it leads to 100% CPU usage and hard
lockup shortly afterwards).
err = usb_submit_urb(urb, GFP_ATOMIC);
- if (err < 0) {
+ if (err < 0 && err != -EPERM) {
BT_ERR("%s urb %p failed to resubmit (%d)",
hdev->name, urb, -err);
usb_unanchor_urb(urb);
you are forgetting the usb_unanchor_urb for the -EPERM case here.
From 9cd3d383b5b172b78e7887b38f9b30acfb469d52 Mon Sep 17 00:00:00 2001
From: Stefan Seyfried
Date: Tue, 30 Nov 2010 17:46:23 +0100
Subject: [PATCH] btusb: Fix log spamming due to autosuspend
If a device is autosuspended an inability to resubmit URBs is
to be expected. Check the error code and only log real errors.
Signed-off-by: Stefan Seyfried
---
drivers/bluetooth/btusb.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index ab3894f..d323c1a 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -239,7 +239,8 @@ static void btusb_intr_complete(struct urb *urb)
err = usb_submit_urb(urb, GFP_ATOMIC);
if (err < 0) {
- BT_ERR("%s urb %p failed to resubmit (%d)",
+ if (err != -EPERM)
+ BT_ERR("%s urb %p failed to resubmit (%d)",
hdev->name, urb, -err);
usb_unanchor_urb(urb);
}
@@ -323,7 +324,8 @@ static void btusb_bulk_complete(struct urb *urb)
err = usb_submit_urb(urb, GFP_ATOMIC);
if (err < 0) {
- BT_ERR("%s urb %p failed to resubmit (%d)",
+ if (err != -EPERM)
+ BT_ERR("%s urb %p failed to resubmit (%d)",
hdev->name, urb, -err);
usb_unanchor_urb(urb);
}
@@ -412,7 +414,8 @@ static void btusb_isoc_complete(struct urb *urb)
err = usb_submit_urb(urb, GFP_ATOMIC);
if (err < 0) {
- BT_ERR("%s urb %p failed to resubmit (%d)",
+ if (err != -EPERM)
+ BT_ERR("%s urb %p failed to resubmit (%d)",
hdev->name, urb, -err);
usb_unanchor_urb(urb);
}
--
1.7.3.1
--
Stefan Seyfried
"Any ideas, John?"
"Well, surrounding them's out."