summaryrefslogtreecommitdiffstats
path: root/net/bluetooth
diff options
context:
space:
mode:
authorFlorian Grandel <fgrandel@gmail.com>2015-06-18 03:16:40 +0200
committerMarcel Holtmann <marcel@holtmann.org>2015-06-18 18:11:51 +0200
commit411b4121e3a38ff78695ae019642a9cab1babf12 (patch)
tree8ac3581bcfbbb6af6194b43bce5598e8fc55bca4 /net/bluetooth
parent3ff37e6b8cfcc57412320ec30f2b66d47f271cad (diff)
downloadlinux-0-day-411b4121e3a38ff78695ae019642a9cab1babf12.tar.gz
linux-0-day-411b4121e3a38ff78695ae019642a9cab1babf12.tar.xz
Bluetooth: mgmt: multi adv for get_adv_instance_flags()
The get_adv_instance_flags() would not work with instance identifiers other than 0x01. This is being fixed so that arbitrary instance identifiers can be dealt with while still correctly dealing with the special case of the 0x00 identifier. Signed-off-by: Florian Grandel <fgrandel@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth')
-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 55b91530ea268..05f14c54b7edc 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;