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