summaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/btmrvl_sdio.c
diff options
context:
space:
mode:
authorAmitkumar Karwar <akarwar@marvell.com>2015-01-01 09:13:41 +0100
committerMarcel Holtmann <marcel@holtmann.org>2015-01-06 16:19:35 +0100
commit7b4b8740c6fc153fbb24b3c1ac391cf8908ad113 (patch)
tree8eef99bf9f66208596533e6849851b992e98e159 /drivers/bluetooth/btmrvl_sdio.c
parentBluetooth: btmrvl: error path handling in setup handler (diff)
downloadlinux-7b4b8740c6fc153fbb24b3c1ac391cf8908ad113.tar.xz
linux-7b4b8740c6fc153fbb24b3c1ac391cf8908ad113.zip
Bluetooth: btmrvl: add surprise_removed flag
This flag will be set in unload path to make sure that we skip sending further commands, ignore interrupts and stop main thread when unload starts. Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'drivers/bluetooth/btmrvl_sdio.c')
-rw-r--r--drivers/bluetooth/btmrvl_sdio.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/bluetooth/btmrvl_sdio.c b/drivers/bluetooth/btmrvl_sdio.c
index 0057c0b7a776..80ec2008bd7c 100644
--- a/drivers/bluetooth/btmrvl_sdio.c
+++ b/drivers/bluetooth/btmrvl_sdio.c
@@ -798,6 +798,9 @@ static void btmrvl_sdio_interrupt(struct sdio_func *func)
priv = card->priv;
+ if (priv->surprise_removed)
+ return;
+
if (card->reg->int_read_to_clear)
ret = btmrvl_sdio_read_to_clear(card, &ireg);
else
@@ -1466,6 +1469,7 @@ static void btmrvl_sdio_remove(struct sdio_func *func)
btmrvl_sdio_disable_host_int(card);
}
BT_DBG("unregester dev");
+ card->priv->surprise_removed = true;
btmrvl_sdio_unregister_dev(card);
btmrvl_remove_card(card->priv);
}