diff mbox series

[v2,1/2] Bluetooth: HCI: Fix definition of hci_rp_read_stored_link_key

Message ID 20211125001613.3274241-1-luiz.dentz@gmail.com
State New
Headers show
Series [v2,1/2] Bluetooth: HCI: Fix definition of hci_rp_read_stored_link_key | expand

Commit Message

Luiz Augusto von Dentz Nov. 25, 2021, 12:16 a.m. UTC
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

Both max_num_keys and num_key are 2 octects:

BLUETOOTH CORE SPECIFICATION Version 5.3 | Vol 4, Part E
page 1985:

  Max_Num_Keys:
  Size: 2 octets
  Range: 0x0000 to 0xFFFF

  Num_Keys_Read:
  Size: 2 octets
  Range: 0x0000 to 0xFFFF

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
v2: Use __le16 instead of __u16 in hci_rp_read_stored_link_key and update
fields in hci_dev to properly store 2 octects. Also add a patch for
hci_rp_delete_stored_link_key since num_keys is also 2 octecs like
hci_rp_read_stored_link_key.

 include/net/bluetooth/hci.h      | 4 ++--
 include/net/bluetooth/hci_core.h | 4 ++--
 net/bluetooth/hci_event.c        | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

Comments

Marcel Holtmann Nov. 25, 2021, 8:06 p.m. UTC | #1
Hi Luiz,

> Both max_num_keys and num_key are 2 octects:
> 
> BLUETOOTH CORE SPECIFICATION Version 5.3 | Vol 4, Part E
> page 1985:
> 
>  Max_Num_Keys:
>  Size: 2 octets
>  Range: 0x0000 to 0xFFFF
> 
>  Num_Keys_Read:
>  Size: 2 octets
>  Range: 0x0000 to 0xFFFF
> 
> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> ---
> v2: Use __le16 instead of __u16 in hci_rp_read_stored_link_key and update
> fields in hci_dev to properly store 2 octects. Also add a patch for
> hci_rp_delete_stored_link_key since num_keys is also 2 octecs like
> hci_rp_read_stored_link_key.
> 
> include/net/bluetooth/hci.h      | 4 ++--
> include/net/bluetooth/hci_core.h | 4 ++--
> net/bluetooth/hci_event.c        | 4 ++--
> 3 files changed, 6 insertions(+), 6 deletions(-)

patch has been applied to bluetooth-next tree. However I had to fix some alignment issue.

Regards

Marcel
diff mbox series

Patch

diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 84db6b275231..3c5211c3a790 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -1047,8 +1047,8 @@  struct hci_cp_read_stored_link_key {
 } __packed;
 struct hci_rp_read_stored_link_key {
 	__u8     status;
-	__u8     max_keys;
-	__u8     num_keys;
+	__le16    max_keys;
+	__le16    num_keys;
 } __packed;
 
 #define HCI_OP_DELETE_STORED_LINK_KEY	0x0c12
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index 2560cfe80db8..bb07a6d0d597 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -352,8 +352,8 @@  struct hci_dev {
 	__u16		lmp_subver;
 	__u16		voice_setting;
 	__u8		num_iac;
-	__u8		stored_max_keys;
-	__u8		stored_num_keys;
+	__u16		stored_max_keys;
+	__u16		stored_num_keys;
 	__u8		io_capability;
 	__s8		inq_tx_power;
 	__u8		err_data_reporting;
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index efc5458b1345..7452de6895fc 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -256,8 +256,8 @@  static void hci_cc_read_stored_link_key(struct hci_dev *hdev,
 		return;
 
 	if (!rp->status && sent->read_all == 0x01) {
-		hdev->stored_max_keys = rp->max_keys;
-		hdev->stored_num_keys = rp->num_keys;
+		hdev->stored_max_keys = le16_to_cpu(rp->max_keys);
+		hdev->stored_num_keys = le16_to_cpu(rp->num_keys);
 	}
 }