MediaTek iso data anchor init should be move to where MediaTek claims iso data interface. If there is an unexpected usb disconnect during setup flow, it will cause a NULL pointer crash issue when releasing iso anchor since the anchor wan't been init yet. Adjust the position to do iso data anchor init. Signed-off-by: Chris Lu <chris.lu@xxxxxxxxxxxx> --- drivers/bluetooth/btmtk.c | 1 - drivers/bluetooth/btusb.c | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/btmtk.c b/drivers/bluetooth/btmtk.c index b7fc14aafc74..8a3f7c3fcfec 100644 --- a/drivers/bluetooth/btmtk.c +++ b/drivers/bluetooth/btmtk.c @@ -1215,7 +1215,6 @@ static int btmtk_usb_isointf_init(struct hci_dev *hdev) struct sk_buff *skb; int err; - init_usb_anchor(&btmtk_data->isopkt_anchor); spin_lock_init(&btmtk_data->isorxlock); __set_mtk_intr_interface(hdev); diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 9970470c9d15..15c0885c37cd 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -2628,6 +2628,8 @@ static void btusb_mtk_claim_iso_intf(struct btusb_data *data) struct btmtk_data *btmtk_data = hci_get_priv(data->hdev); int err; + init_usb_anchor(&btmtk_data->isopkt_anchor); + err = usb_driver_claim_interface(&btusb_driver, btmtk_data->isopkt_intf, data); if (err < 0) { -- 2.18.0