]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: wfx: Fix error handling in wfx_core_init()
authorYuan Can <yuancan@huawei.com>
Tue, 22 Oct 2024 09:04:53 +0000 (17:04 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 14 Dec 2024 18:50:56 +0000 (19:50 +0100)
[ Upstream commit 3b88a9876779b55478a4dde867e73f7a100ffa23 ]

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
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/staging/wfx/main.c

index 9ff69c5e0ae9700d9dbc9d6f356a6ddb01700c7a..9849d0998a6366e428e515e81ac5fff8e464c781 100644 (file)
@@ -476,10 +476,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);