Commit fea69916 authored by Dan Carpenter's avatar Dan Carpenter Committed by Greg Kroah-Hartman

staging: wilc1000: Fix some double unlock bugs in wilc_wlan_cleanup()

If ->hif_read_reg() or ->hif_write_reg() fail then the code unlocks
and keeps executing.  It should just return.

Fixes: c5c77ba1 ("staging: wilc1000: Add SDIO/SPI 802.11 driver")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ca641bae
...@@ -1076,13 +1076,17 @@ void wilc_wlan_cleanup(struct net_device *dev) ...@@ -1076,13 +1076,17 @@ void wilc_wlan_cleanup(struct net_device *dev)
acquire_bus(wilc, WILC_BUS_ACQUIRE_AND_WAKEUP); acquire_bus(wilc, WILC_BUS_ACQUIRE_AND_WAKEUP);
ret = wilc->hif_func->hif_read_reg(wilc, WILC_GP_REG_0, &reg); ret = wilc->hif_func->hif_read_reg(wilc, WILC_GP_REG_0, &reg);
if (!ret) if (!ret) {
release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP); release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP);
return;
}
ret = wilc->hif_func->hif_write_reg(wilc, WILC_GP_REG_0, ret = wilc->hif_func->hif_write_reg(wilc, WILC_GP_REG_0,
(reg | ABORT_INT)); (reg | ABORT_INT));
if (!ret) if (!ret) {
release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP); release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP);
return;
}
release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP); release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP);
wilc->hif_func->hif_deinit(NULL); wilc->hif_func->hif_deinit(NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment