wifi: p54: Fix an error handling path in p54spi_probe()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 12 Jun 2022 21:12:20 +0000 (23:12 +0200)
committerKalle Valo <kvalo@kernel.org>
Mon, 18 Jul 2022 11:51:13 +0000 (14:51 +0300)
If an error occurs after a successful call to p54spi_request_firmware(), it
must be undone by a corresponding release_firmware() as already done in
the error handling path of p54spi_request_firmware() and in the .remove()
function.

Add the missing call in the error handling path and remove it from
p54spi_request_firmware() now that it is the responsibility of the caller
to release the firmware

Fixes: cd8d3d321285 ("p54spi: p54spi driver")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Acked-by: Christian Lamparter <chunkeey@gmail.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/297d2547ff2ee627731662abceeab9dbdaf23231.1655068321.git.christophe.jaillet@wanadoo.fr
drivers/net/wireless/intersil/p54/p54spi.c

index f99b7ba..19152fd 100644 (file)
@@ -164,7 +164,7 @@ static int p54spi_request_firmware(struct ieee80211_hw *dev)
 
        ret = p54_parse_firmware(dev, priv->firmware);
        if (ret) {
-               release_firmware(priv->firmware);
+               /* the firmware is released by the caller */
                return ret;
        }
 
@@ -659,6 +659,7 @@ static int p54spi_probe(struct spi_device *spi)
        return 0;
 
 err_free_common:
+       release_firmware(priv->firmware);
        free_irq(gpio_to_irq(p54spi_gpio_irq), spi);
 err_free_gpio_irq:
        gpio_free(p54spi_gpio_irq);