From 28d022a1a4c4360fcb6e845940afd4093b02e600 Mon Sep 17 00:00:00 2001 From: Johan Hovold Date: Thu, 15 Mar 2012 14:48:41 +0100 Subject: [PATCH] --- yaml --- r: 299031 b: refs/heads/master c: 94324962066231a938564bebad0f941cd2d06bb2 h: refs/heads/master i: 299029: 2085851517497227014eef1351a871afdc0f3a77 299027: 8793342136c196d0b027aceec3ba81f58a80e6fb 299023: e6d108973d1a5c6d85e6e919687232bc7b4c46a6 v: v3 --- [refs] | 2 +- trunk/include/net/bluetooth/hci.h | 1 + trunk/net/bluetooth/hci_core.c | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f5affd9f15d1..13eeca173b07 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 33b69bf80a3704d45341928e4ff68b6ebd470686 +refs/heads/master: 94324962066231a938564bebad0f941cd2d06bb2 diff --git a/trunk/include/net/bluetooth/hci.h b/trunk/include/net/bluetooth/hci.h index 344b0f972828..8f928f75e85e 100644 --- a/trunk/include/net/bluetooth/hci.h +++ b/trunk/include/net/bluetooth/hci.h @@ -92,6 +92,7 @@ enum { HCI_SERVICE_CACHE, HCI_LINK_KEYS, HCI_DEBUG_KEYS, + HCI_UNREGISTER, HCI_LE_SCAN, HCI_SSP_ENABLED, diff --git a/trunk/net/bluetooth/hci_core.c b/trunk/net/bluetooth/hci_core.c index 59ec99eb739b..2054c1321c87 100644 --- a/trunk/net/bluetooth/hci_core.c +++ b/trunk/net/bluetooth/hci_core.c @@ -666,6 +666,11 @@ int hci_dev_open(__u16 dev) hci_req_lock(hdev); + if (test_bit(HCI_UNREGISTER, &hdev->dev_flags)) { + ret = -ENODEV; + goto done; + } + if (hdev->rfkill && rfkill_blocked(hdev->rfkill)) { ret = -ERFKILL; goto done; @@ -1850,6 +1855,8 @@ void hci_unregister_dev(struct hci_dev *hdev) BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus); + set_bit(HCI_UNREGISTER, &hdev->dev_flags); + write_lock(&hci_dev_list_lock); list_del(&hdev->list); write_unlock(&hci_dev_list_lock);