summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJefferson Delfes <jefferson.delfes@openbossa.org>2012-06-11 09:18:51 -0400
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>2012-06-12 23:19:21 -0300
commitaf7985bf85840e3dc90ba108a679db044f91f00e (patch)
tree5c28fee15c4ebe666cfefc9744c8f67a1adcc2d5
parent11778716ededa873f24eebaae011e52f3d27dfca (diff)
downloadlinux-3.10-af7985bf85840e3dc90ba108a679db044f91f00e.tar.gz
linux-3.10-af7985bf85840e3dc90ba108a679db044f91f00e.tar.bz2
linux-3.10-af7985bf85840e3dc90ba108a679db044f91f00e.zip
Bluetooth: Fix flags of mgmt_device_found event
Change flags field to matches userspace structure. This field needs to be converted to little endian before forward it. Signed-off-by: Jefferson Delfes <jefferson.delfes@openbossa.org> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
-rw-r--r--include/net/bluetooth/mgmt.h2
-rw-r--r--net/bluetooth/mgmt.c5
2 files changed, 4 insertions, 3 deletions
diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h
index 23fd0546fcc..4348ee8bda6 100644
--- a/include/net/bluetooth/mgmt.h
+++ b/include/net/bluetooth/mgmt.h
@@ -444,7 +444,7 @@ struct mgmt_ev_auth_failed {
struct mgmt_ev_device_found {
struct mgmt_addr_info addr;
__s8 rssi;
- __u8 flags[4];
+ __le32 flags;
__le16 eir_len;
__u8 eir[0];
} __packed;
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index c72307cc25f..b4816632d72 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -3546,9 +3546,9 @@ int mgmt_device_found(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
ev->addr.type = link_to_bdaddr(link_type, addr_type);
ev->rssi = rssi;
if (cfm_name)
- ev->flags[0] |= MGMT_DEV_FOUND_CONFIRM_NAME;
+ ev->flags |= MGMT_DEV_FOUND_CONFIRM_NAME;
if (!ssp)
- ev->flags[0] |= MGMT_DEV_FOUND_LEGACY_PAIRING;
+ ev->flags |= MGMT_DEV_FOUND_LEGACY_PAIRING;
if (eir_len > 0)
memcpy(ev->eir, eir, eir_len);
@@ -3558,6 +3558,7 @@ int mgmt_device_found(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
dev_class, 3);
ev->eir_len = cpu_to_le16(eir_len);
+ ev->flags = cpu_to_le32(ev->flags);
ev_size = sizeof(*ev) + eir_len;