Skip to content

Commit

Permalink
Bluetooth: mgmt: Fix set_local_name and set_dev_class powered checks
Browse files Browse the repository at this point in the history
Both the Set Local Name and the Set Device Class commands should fail if
the adapter is not powered on.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
  • Loading branch information
Johan Hedberg committed Feb 21, 2012
1 parent 4b34ee7 commit b5235a6
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions net/bluetooth/mgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -1272,6 +1272,12 @@ static int set_dev_class(struct sock *sk, u16 index, void *data, u16 len)

hci_dev_lock(hdev);

if (!hdev_is_powered(hdev)) {
err = cmd_status(sk, index, MGMT_OP_SET_DEV_CLASS,
MGMT_STATUS_NOT_POWERED);
goto unlock;
}

hdev->major_class = cp->major;
hdev->minor_class = cp->minor;

Expand All @@ -1288,6 +1294,7 @@ static int set_dev_class(struct sock *sk, u16 index, void *data, u16 len)
err = cmd_complete(sk, index, MGMT_OP_SET_DEV_CLASS, 0,
NULL, 0);

unlock:
hci_dev_unlock(hdev);
hci_dev_put(hdev);

Expand Down Expand Up @@ -2076,6 +2083,12 @@ static int set_local_name(struct sock *sk, u16 index, void *data,

hci_dev_lock(hdev);

if (!hdev_is_powered(hdev)) {
err = cmd_status(sk, index, MGMT_OP_SET_LOCAL_NAME,
MGMT_STATUS_NOT_POWERED);
goto failed;
}

cmd = mgmt_pending_add(sk, MGMT_OP_SET_LOCAL_NAME, hdev, data,
len);
if (!cmd) {
Expand Down

0 comments on commit b5235a6

Please sign in to comment.