Search Linux Wireless

Re: [PATCH] wifi: wfx: Fix error handling in wfx_core_init()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tuesday 22 October 2024 11:04:53 CEST Yuan Can wrote:
> 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@xxxxxxxxxx>
> ---
>  drivers/net/wireless/silabs/wfx/main.c | 17 +++++++++++++++--
>  1 file 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);


Reviewed-by: Jérôme Pouiller <jerome.pouiller@xxxxxxxxxx>

-- 
Jérôme Pouiller







[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux