summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Khoroshilov <khoroshilov@ispras.ru>2013-11-19 01:45:08 +0400
committerJohn W. Linville <linville@tuxdriver.com>2013-12-05 14:56:24 -0500
commiteddc633a3abcffbbe2fb1eb460670f0c63b11211 (patch)
treeaa82664889dff06ea5cfe1cc95f66af7e2d8894f
parent18a7424f8c76ff7acdda49e4346571cc2a69b7f9 (diff)
downloadlinux-eddc633a3abcffbbe2fb1eb460670f0c63b11211.tar.gz
linux-eddc633a3abcffbbe2fb1eb460670f0c63b11211.tar.xz
libertas sdio: claim device before calling sdio_disable_func()
There is a failure path in if_sdio_power_on(), where sdio_disable_func() is called without claiming the device. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/libertas/if_sdio.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
index 828e7f4fc633..58c6ee5de98f 100644
--- a/drivers/net/wireless/libertas/if_sdio.c
+++ b/drivers/net/wireless/libertas/if_sdio.c
@@ -907,8 +907,8 @@ static int if_sdio_power_on(struct if_sdio_card *card)
sdio_release_host(func);
ret = if_sdio_prog_firmware(card);
if (ret) {
- sdio_disable_func(func);
- return ret;
+ sdio_claim_host(func);
+ goto disable;
}
return 0;