]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Bluetooth: btintel: Do no pass vendor events to stack
authorKiran K <kiran.k@intel.com>
Thu, 17 Oct 2024 11:51:56 +0000 (17:21 +0530)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 14 Nov 2024 20:32:28 +0000 (15:32 -0500)
During firmware download, vendor specific events like boot up and
secure send result are generated. These events can be safely processed at
the driver level. Passing on these events to stack prints unnecessary
log as below.

    Bluetooth: hci0: Malformed MSFT vendor event: 0x02

Fixes: 3368aa357f3b ("Bluetooth: msft: Handle MSFT Monitor Device Event")
Signed-off-by: Kiran K <kiran.k@intel.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btintel.c
drivers/bluetooth/btintel_pcie.c

index 2be6d48a2a656a839b12075995512066eaa48803..e122dff855ba3c3283154537428441935a473d4d 100644 (file)
@@ -3395,7 +3395,8 @@ int btintel_recv_event(struct hci_dev *hdev, struct sk_buff *skb)
                                 * indicating that the bootup completed.
                                 */
                                btintel_bootup(hdev, ptr, len);
-                               break;
+                               kfree_skb(skb);
+                               return 0;
                        case 0x06:
                                /* When the firmware loading completes the
                                 * device sends out a vendor specific event
@@ -3403,7 +3404,8 @@ int btintel_recv_event(struct hci_dev *hdev, struct sk_buff *skb)
                                 * loading.
                                 */
                                btintel_secure_send_result(hdev, ptr, len);
-                               break;
+                               kfree_skb(skb);
+                               return 0;
                        }
                }
 
index 660496e55276dddd4af59a3c76a7eade5dc4e6c4..fd4a8bd056fa92eb14c4bb763954bfcc74f207b7 100644 (file)
@@ -550,7 +550,8 @@ static int btintel_pcie_recv_event(struct hci_dev *hdev, struct sk_buff *skb)
                                if (btintel_pcie_in_op(data)) {
                                        btintel_pcie_wr_sleep_cntrl(data, BTINTEL_PCIE_STATE_D0);
                                        data->alive_intr_ctxt = BTINTEL_PCIE_INTEL_HCI_RESET2;
-                                       break;
+                                       kfree_skb(skb);
+                                       return 0;
                                }
 
                                if (btintel_pcie_in_iml(data)) {
@@ -567,7 +568,8 @@ static int btintel_pcie_recv_event(struct hci_dev *hdev, struct sk_buff *skb)
                                                btintel_wake_up_flag(data->hdev,
                                                                     INTEL_WAIT_FOR_D0);
                                }
-                               break;
+                               kfree_skb(skb);
+                               return 0;
                        case 0x06:
                                /* When the firmware loading completes the
                                 * device sends out a vendor specific event
@@ -575,7 +577,8 @@ static int btintel_pcie_recv_event(struct hci_dev *hdev, struct sk_buff *skb)
                                 * loading.
                                 */
                                btintel_secure_send_result(hdev, ptr, len);
-                               break;
+                               kfree_skb(skb);
+                               return 0;
                        }
                }