Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 369014
b: refs/heads/master
c: 5d73e03
h: refs/heads/master
v: v3
  • Loading branch information
Andre Guedes authored and Gustavo Padovan committed Mar 9, 2013
1 parent c78d526 commit d9f7f57
Show file tree
Hide file tree
Showing 3 changed files with 18 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: 920c8300c66566afbf92311152c6e462a310203e
refs/heads/master: 5d73e0342fd9bf500583868906325d42c4d2bf6f
5 changes: 5 additions & 0 deletions trunk/include/net/bluetooth/hci_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -1042,6 +1042,11 @@ int hci_unregister_cb(struct hci_cb *hcb);
struct hci_request {
struct hci_dev *hdev;
struct sk_buff_head cmd_q;

/* If something goes wrong when building the HCI request, the error
* value is stored in this field.
*/
int err;
};

void hci_req_init(struct hci_request *req, struct hci_dev *hdev);
Expand Down
13 changes: 12 additions & 1 deletion trunk/net/bluetooth/hci_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2443,6 +2443,7 @@ void hci_req_init(struct hci_request *req, struct hci_dev *hdev)
{
skb_queue_head_init(&req->cmd_q);
req->hdev = hdev;
req->err = 0;
}

int hci_req_run(struct hci_request *req, hci_req_complete_t complete)
Expand All @@ -2453,6 +2454,14 @@ int hci_req_run(struct hci_request *req, hci_req_complete_t complete)

BT_DBG("length %u", skb_queue_len(&req->cmd_q));

/* If an error occured during request building, remove all HCI
* commands queued on the HCI request queue.
*/
if (req->err) {
skb_queue_purge(&req->cmd_q);
return req->err;
}

/* Do not allow empty requests */
if (skb_queue_empty(&req->cmd_q))
return -ENODATA;
Expand Down Expand Up @@ -2529,7 +2538,9 @@ int hci_req_add(struct hci_request *req, u16 opcode, u32 plen, void *param)

skb = hci_prepare_cmd(hdev, opcode, plen, param);
if (!skb) {
BT_ERR("%s no memory for command", hdev->name);
BT_ERR("%s no memory for command (opcode 0x%4.4x)",
hdev->name, opcode);
req->err = -ENOMEM;
return -ENOMEM;
}

Expand Down

0 comments on commit d9f7f57

Please sign in to comment.