Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 291045
b: refs/heads/master
c: 5f97c1d
h: refs/heads/master
i:
  291043: 6a577b9
v: v3
  • Loading branch information
Johan Hedberg committed Feb 23, 2012
1 parent 168aabc commit 928d060
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 932f5ff5e32bf520eb9287b050c926faa6e76bcf
refs/heads/master: 5f97c1df5563349795f26ed249e2a8840237c569
37 changes: 36 additions & 1 deletion trunk/net/bluetooth/mgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -1735,6 +1735,12 @@ static int get_connections(struct sock *sk, u16 index)

hci_dev_lock(hdev);

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

count = 0;
list_for_each_entry(c, &hdev->conn_hash.list, list) {
if (test_bit(HCI_CONN_MGMT_CONNECTED, &c->flags))
Expand Down Expand Up @@ -1766,8 +1772,9 @@ static int get_connections(struct sock *sk, u16 index)

err = cmd_complete(sk, index, MGMT_OP_GET_CONNECTIONS, 0, rp, rp_len);

unlock:
kfree(rp);

unlock:
hci_dev_unlock(hdev);
hci_dev_put(hdev);
return err;
Expand Down Expand Up @@ -2002,6 +2009,12 @@ static int pair_device(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_PAIR_DEVICE,
MGMT_STATUS_NOT_POWERED);
goto unlock;
}

sec_level = BT_SECURITY_MEDIUM;
if (cp->io_cap == 0x03)
auth_type = HCI_AT_DEDICATED_BONDING;
Expand Down Expand Up @@ -2084,6 +2097,12 @@ static int cancel_pair_device(struct sock *sk, u16 index,

hci_dev_lock(hdev);

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

cmd = mgmt_pending_find(MGMT_OP_PAIR_DEVICE, hdev);
if (!cmd) {
err = cmd_status(sk, index, MGMT_OP_CANCEL_PAIR_DEVICE,
Expand Down Expand Up @@ -2375,6 +2394,13 @@ static int add_remote_oob_data(struct sock *sk, u16 index, void *data,

hci_dev_lock(hdev);

if (!hdev_is_powered(hdev)) {
err = cmd_complete(sk, index, MGMT_OP_ADD_REMOTE_OOB_DATA,
MGMT_STATUS_NOT_POWERED,
&cp->addr, sizeof(cp->addr));
goto unlock;
}

err = hci_add_remote_oob_data(hdev, &cp->addr.bdaddr, cp->hash,
cp->randomizer);
if (err < 0)
Expand All @@ -2385,6 +2411,7 @@ static int add_remote_oob_data(struct sock *sk, u16 index, void *data,
err = cmd_complete(sk, index, MGMT_OP_ADD_REMOTE_OOB_DATA, status,
&cp->addr, sizeof(cp->addr));

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

Expand Down Expand Up @@ -2413,6 +2440,13 @@ static int remove_remote_oob_data(struct sock *sk, u16 index,

hci_dev_lock(hdev);

if (!hdev_is_powered(hdev)) {
err = cmd_complete(sk, index, MGMT_OP_REMOVE_REMOTE_OOB_DATA,
MGMT_STATUS_NOT_POWERED,
&cp->addr, sizeof(cp->addr));
goto unlock;
}

err = hci_remove_remote_oob_data(hdev, &cp->addr.bdaddr);
if (err < 0)
status = MGMT_STATUS_INVALID_PARAMS;
Expand All @@ -2422,6 +2456,7 @@ static int remove_remote_oob_data(struct sock *sk, u16 index,
err = cmd_complete(sk, index, MGMT_OP_REMOVE_REMOTE_OOB_DATA, status,
&cp->addr, sizeof(cp->addr));

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

Expand Down

0 comments on commit 928d060

Please sign in to comment.