diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index f5b21cb936996b87ec7138d8b8b81c3e1fa6f006..278a3ace14f664e019a85109ae6450e9ed13cff6 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -164,6 +164,9 @@ static inline int hci_request(struct hci_dev *hdev, void (*req)(struct hci_dev *
 {
 	int ret;
 
+	if (!test_bit(HCI_UP, &hdev->flags))
+		return -ENETDOWN;
+
 	/* Serialize all requests */
 	hci_req_lock(hdev);
 	ret = __hci_request(hdev, req, opt, timeout);