From 8a5cb8e9de7079e093511b1b116e8f71421d230e Mon Sep 17 00:00:00 2001 From: "Gustavo F. Padovan" Date: Fri, 17 Jun 2011 16:15:10 -0300 Subject: [PATCH] --- yaml --- r: 255847 b: refs/heads/master c: a7925bd27d6ef020b8f3a3a64bde61d0add07220 h: refs/heads/master i: 255845: 72560f17190b425b8e6ab87d4c7e943cf3772d72 255843: 48fd0a3d4928d6f545d4878da0b11c7c717bc663 255839: 54cdac6d8ed0e5c07a56fae15fcfe29bfb5af639 v: v3 --- [refs] | 2 +- trunk/net/bluetooth/hci_core.c | 38 ++++++++++++++++++++++------------ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index 611553f418a2..ded1d59874be 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e2ab43536c53ba112a0adfb4c0dba286544c41f6 +refs/heads/master: a7925bd27d6ef020b8f3a3a64bde61d0add07220 diff --git a/trunk/net/bluetooth/hci_core.c b/trunk/net/bluetooth/hci_core.c index 8f5bee15e872..0029e178e52e 100644 --- a/trunk/net/bluetooth/hci_core.c +++ b/trunk/net/bluetooth/hci_core.c @@ -1241,47 +1241,59 @@ int hci_blacklist_clear(struct hci_dev *hdev) int hci_blacklist_add(struct hci_dev *hdev, bdaddr_t *bdaddr) { struct bdaddr_list *entry; - - hci_dev_lock(hdev); + int err; if (bacmp(bdaddr, BDADDR_ANY) == 0) return -EBADF; - if (hci_blacklist_lookup(hdev, bdaddr)) - return -EEXIST; + hci_dev_lock(hdev); + + if (hci_blacklist_lookup(hdev, bdaddr)) { + err = -EEXIST; + goto err; + } entry = kzalloc(sizeof(struct bdaddr_list), GFP_KERNEL); - if (!entry) + if (!entry) { return -ENOMEM; + goto err; + } bacpy(&entry->bdaddr, bdaddr); list_add(&entry->list, &hdev->blacklist); - hci_dev_unlock(hdev); + err = 0; - return 0; +err: + hci_dev_unlock(hdev); + return err; } int hci_blacklist_del(struct hci_dev *hdev, bdaddr_t *bdaddr) { struct bdaddr_list *entry; + int err = 0; hci_dev_lock(hdev); - if (bacmp(bdaddr, BDADDR_ANY) == 0) - return hci_blacklist_clear(hdev); + if (bacmp(bdaddr, BDADDR_ANY) == 0) { + hci_blacklist_clear(hdev); + goto done; + } entry = hci_blacklist_lookup(hdev, bdaddr); - if (!entry) - return -ENOENT; + if (!entry) { + err = -ENOENT; + goto done; + } list_del(&entry->list); kfree(entry); +done: hci_dev_unlock(hdev); - - return 0; + return err; } static void hci_clear_adv_cache(unsigned long arg)