Commit 0b6d58bc authored by Chris Lu's avatar Chris Lu Committed by Luiz Augusto von Dentz
Browse files

Bluetooth: btmtksdio: Do close if SDIO card removed without close



To prevent Bluetooth SDIO card from be physically removed suddenly,
driver needs to ensure btmtksdio_close is called before
btmtksdio_remove to disable interrupts and txrx workqueue.

Fixes: 6ac4233a ("Bluetooth: btmtksdio: Prevent enabling interrupts after IRQ handler removal")
Signed-off-by: default avatarChris Lu <chris.lu@mediatek.com>
Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
parent 07e90048
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1447,11 +1447,15 @@ static void btmtksdio_remove(struct sdio_func *func)
	if (!bdev)
		return;

	hdev = bdev->hdev;

	/* Make sure to call btmtksdio_close before removing sdio card */
	if (test_bit(BTMTKSDIO_FUNC_ENABLED, &bdev->tx_state))
		btmtksdio_close(hdev);

	/* Be consistent the state in btmtksdio_probe */
	pm_runtime_get_noresume(bdev->dev);

	hdev = bdev->hdev;

	sdio_set_drvdata(func, NULL);
	hci_unregister_dev(hdev);
	hci_free_dev(hdev);