Linux bluetooth development
 help / color / mirror / Atom feed
From: johan.hedberg@gmail.com
To: linux-bluetooth@vger.kernel.org
Subject: [PATCH 4/8] Bluetooth: Fix busy return for mgmt_set_powered in some cases
Date: Tue, 24 Sep 2013 17:02:39 +0300	[thread overview]
Message-ID: <1380031363-1266-5-git-send-email-johan.hedberg@gmail.com> (raw)
In-Reply-To: <1380031363-1266-1-git-send-email-johan.hedberg@gmail.com>

From: Johan Hedberg <johan.hedberg@intel.com>

We should return a "busy" error always when there is another
mgmt_set_powered operation in progress. Previously when powering on
while the auto off timer was still set the code could have let two or
more pending power on commands to be queued. This patch fixes the issue
by moving the check for duplicate commands to an earlier point in the
set_powered handler.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
 net/bluetooth/mgmt.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 5319a94..2a91346 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -807,6 +807,12 @@ static int set_powered(struct sock *sk, struct hci_dev *hdev, void *data,
 
 	hci_dev_lock(hdev);
 
+	if (mgmt_pending_find(MGMT_OP_SET_POWERED, hdev)) {
+		err = cmd_status(sk, hdev->id, MGMT_OP_SET_POWERED,
+				 MGMT_STATUS_BUSY);
+		goto failed;
+	}
+
 	if (test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags)) {
 		cancel_delayed_work(&hdev->power_off);
 
@@ -823,12 +829,6 @@ static int set_powered(struct sock *sk, struct hci_dev *hdev, void *data,
 		goto failed;
 	}
 
-	if (mgmt_pending_find(MGMT_OP_SET_POWERED, hdev)) {
-		err = cmd_status(sk, hdev->id, MGMT_OP_SET_POWERED,
-				 MGMT_STATUS_BUSY);
-		goto failed;
-	}
-
 	cmd = mgmt_pending_add(sk, MGMT_OP_SET_POWERED, hdev, data, len);
 	if (!cmd) {
 		err = -ENOMEM;
-- 
1.8.4.rc3


  parent reply	other threads:[~2013-09-24 14:02 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-24 14:02 [PATCH 0/8] Bluetooth: Cleanups and LE advertising support johan.hedberg
2013-09-24 14:02 ` [PATCH 1/8] Bluetooth: Add clarifying comment to bt_sock_wait_state() johan.hedberg
2013-09-24 18:11   ` Marcel Holtmann
2013-09-24 14:02 ` [PATCH 2/8] Bluetooth: Clean up socket locking in l2cap_sock_recvmsg johan.hedberg
2013-09-24 18:16   ` Marcel Holtmann
2013-09-24 14:02 ` [PATCH 3/8] Bluetooth: Test for HCI_SETUP and HCI_USER_CHANNEL in mgmt_valid_hdev() johan.hedberg
2013-09-24 18:19   ` Marcel Holtmann
2013-09-25 10:03     ` Johan Hedberg
2013-09-27  2:12       ` Marcel Holtmann
2013-09-27 11:45         ` Johan Hedberg
2013-09-28  8:06           ` Marcel Holtmann
2013-09-28 15:34             ` Johan Hedberg
2013-09-24 14:02 ` johan.hedberg [this message]
2013-09-24 18:17   ` [PATCH 4/8] Bluetooth: Fix busy return for mgmt_set_powered in some cases Marcel Holtmann
2013-09-24 14:02 ` [PATCH 5/8] Bluetooth: Move mgmt response convenience functions to a better location johan.hedberg
2013-09-24 18:11   ` Marcel Holtmann
2013-09-24 14:02 ` [PATCH 6/8] Bluetooth: Use async request for LE enable/disable johan.hedberg
2013-09-24 18:20   ` Marcel Holtmann
2013-09-24 14:02 ` [PATCH 7/8] Bluetooth: Add new mgmt setting for LE advertising johan.hedberg
2013-09-24 15:45   ` Anderson Lizardo
2013-09-24 17:21     ` Johan Hedberg
2013-09-25 10:28       ` Johan Hedberg
2013-09-24 18:29   ` Marcel Holtmann
2013-09-24 14:02 ` [PATCH 8/8] Bluetooth: Add new mgmt_set_advertising command johan.hedberg
2013-09-24 15:42   ` Johan Hedberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1380031363-1266-5-git-send-email-johan.hedberg@gmail.com \
    --to=johan.hedberg@gmail.com \
    --cc=linux-bluetooth@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox