summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--net/bluetooth/mgmt.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 55b91530ea26..05f14c54b7ed 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -960,12 +960,17 @@ static bool get_connectable(struct hci_dev *hdev)
 static u32 get_adv_instance_flags(struct hci_dev *hdev, u8 instance)
 {
 	u32 flags;
+	struct adv_info *adv_instance;
 
-	if (instance > 0x01)
-		return 0;
+	if (instance != 0x00) {
+		adv_instance = hci_find_adv_instance(hdev, instance);
 
-	if (instance == 0x01)
-		return hdev->adv_instance.flags;
+		/* Return 0 when we got an invalid instance identifier. */
+		if (!adv_instance)
+			return 0;
+
+		return adv_instance->flags;
+	}
 
 	/* Instance 0 always manages the "Tx Power" and "Flags" fields */
 	flags = MGMT_ADV_FLAG_TX_POWER | MGMT_ADV_FLAG_MANAGED_FLAGS;