diff options
| author | Yuan Can <yuancan@huawei.com> | 2024-10-22 17:04:53 +0800 |
|---|---|---|
| committer | Kalle Valo <kvalo@kernel.org> | 2024-10-31 16:18:42 +0200 |
| commit | 3b88a9876779b55478a4dde867e73f7a100ffa23 (patch) | |
| tree | ef135707083d1709e033bf3696fdc45f6a3634a9 | |
| parent | 3c1f19ab3d59d4b01cbb70fc5fbaa8c5805f108b (diff) | |
wifi: wfx: Fix error handling in wfx_core_init()
The wfx_core_init() returns without checking the retval from
sdio_register_driver().
If the sdio_register_driver() failed, the module failed to install,
leaving the wfx_spi_driver not unregistered.
Fixes: a7a91ca5a23d ("staging: wfx: add infrastructure for new driver")
Signed-off-by: Yuan Can <yuancan@huawei.com>
Reviewed-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://patch.msgid.link/20241022090453.84679-1-yuancan@huawei.com
| -rw-r--r-- | drivers/net/wireless/silabs/wfx/main.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/drivers/net/wireless/silabs/wfx/main.c b/drivers/net/wireless/silabs/wfx/main.c index e7198520bdff..64441c8bc460 100644 --- a/drivers/net/wireless/silabs/wfx/main.c +++ b/drivers/net/wireless/silabs/wfx/main.c @@ -480,10 +480,23 @@ static int __init wfx_core_init(void) { int ret = 0; - if (IS_ENABLED(CONFIG_SPI)) + if (IS_ENABLED(CONFIG_SPI)) { ret = spi_register_driver(&wfx_spi_driver); - if (IS_ENABLED(CONFIG_MMC) && !ret) + if (ret) + goto out; + } + if (IS_ENABLED(CONFIG_MMC)) { ret = sdio_register_driver(&wfx_sdio_driver); + if (ret) + goto unregister_spi; + } + + return 0; + +unregister_spi: + if (IS_ENABLED(CONFIG_SPI)) + spi_unregister_driver(&wfx_spi_driver); +out: return ret; } module_init(wfx_core_init); |