diff options
Diffstat (limited to 'net/bluetooth/hci_core.c')
| -rw-r--r-- | net/bluetooth/hci_core.c | 9 | 
1 files changed, 6 insertions, 3 deletions
| diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 476709bd068a..c4802f3bd4c5 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c @@ -1557,7 +1557,8 @@ static int hci_dev_do_close(struct hci_dev *hdev)  {  	BT_DBG("%s %p", hdev->name, hdev); -	if (!hci_dev_test_flag(hdev, HCI_UNREGISTER)) { +	if (!hci_dev_test_flag(hdev, HCI_UNREGISTER) && +	    test_bit(HCI_UP, &hdev->flags)) {  		/* Execute vendor specific shutdown routine */  		if (hdev->shutdown)  			hdev->shutdown(hdev); @@ -2853,9 +2854,11 @@ static void le_scan_disable_work_complete(struct hci_dev *hdev, u8 status,  			 * state. If we were running both LE and BR/EDR inquiry  			 * simultaneously, and BR/EDR inquiry is already  			 * finished, stop discovery, otherwise BR/EDR inquiry -			 * will stop discovery when finished. +			 * will stop discovery when finished. If we will resolve +			 * remote device name, do not change discovery state.  			 */ -			if (!test_bit(HCI_INQUIRY, &hdev->flags)) +			if (!test_bit(HCI_INQUIRY, &hdev->flags) && +			    hdev->discovery.state != DISCOVERY_RESOLVING)  				hci_discovery_set_state(hdev,  							DISCOVERY_STOPPED);  		} else { |