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: c5c77ba18e
("staging: wilc1000: Add SDIO/SPI 802.11 driver")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ca641bae6d
commit
fea6991636
|
@ -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, ®);
|
ret = wilc->hif_func->hif_read_reg(wilc, WILC_GP_REG_0, ®);
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue