From: Luiz Augusto von Dentz <redacted>
The msft_opcode shall only be changed while at the setup stage otherwise
it can possible cause problems where different opcodes are used while
running.
Signed-off-by: Luiz Augusto von Dentz <redacted>
---
v2: Fix typos: s/extention/extension/g
include/net/bluetooth/hci_core.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index dd8840e70e25..eb5d4ea88c3a 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -1272,11 +1272,15 @@ int hci_recv_diag(struct hci_dev *hdev, struct sk_buff *skb);
__printf(2, 3) void hci_set_hw_info(struct hci_dev *hdev, const char *fmt, ...);
__printf(2, 3) void hci_set_fw_info(struct hci_dev *hdev, const char *fmt, ...);
-static inline void hci_set_msft_opcode(struct hci_dev *hdev, __u16 opcode)
+static inline int hci_set_msft_opcode(struct hci_dev *hdev, __u16 opcode)
{
+ if (!hci_dev_test_flag(hdev, HCI_SETUP))
+ return -EPERM;
+
#if IS_ENABLED(CONFIG_BT_MSFTEXT)
hdev->msft_opcode = opcode;
#endif
+ return 0;
}
static inline void hci_set_aosp_capable(struct hci_dev *hdev)--
2.31.1