From 746906f42a4785251f7dbbe3146e55f1174b4bfe Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Tue, 5 Mar 2013 20:37:42 +0200 Subject: [PATCH] --- yaml --- r: 369001 b: refs/heads/master c: 53cce22dc795e73fb48205e3f584f63f4c71c90c h: refs/heads/master i: 368999: f594f70d0a034ea326cd0469fcf18ffe4ac281a6 v: v3 --- [refs] | 2 +- trunk/net/bluetooth/hci_core.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c3e9ecc91148..025534f23717 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 01178cd420e0134ef3fb4da161ba6390c66913bf +refs/heads/master: 53cce22dc795e73fb48205e3f584f63f4c71c90c diff --git a/trunk/net/bluetooth/hci_core.c b/trunk/net/bluetooth/hci_core.c index 551df8a6f983..9369e010c90e 100644 --- a/trunk/net/bluetooth/hci_core.c +++ b/trunk/net/bluetooth/hci_core.c @@ -122,6 +122,14 @@ static int __hci_req_sync(struct hci_dev *hdev, set_current_state(TASK_INTERRUPTIBLE); req(hdev, opt); + + /* If the request didn't send any commands return immediately */ + if (skb_queue_empty(&hdev->cmd_q) && atomic_read(&hdev->cmd_cnt)) { + hdev->req_status = 0; + remove_wait_queue(&hdev->req_wait_q, &wait); + return err; + } + schedule_timeout(timeout); remove_wait_queue(&hdev->req_wait_q, &wait);