Hi, On Sun, Jun 12, 2022 at 9:55 PM Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> wrote: > > If an error occurs after a successful call to p54spi_request_firmware(), it > must be undone by a corresponding release_firmware() Yes, good catch. That makes sense. > 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 update some goto > label accordingly. >From what I know, "release_firmware(some *fw)" includes a check for *fw != NULL already. we could just add a single release_firmware(priv->firmware) to any of the error paths labels (i.e.: err_free_common) and then we remove the extra release_firmware(...) in p54spi_request_firmware so that we don't try to free it twice. (This also skips the need for having "err_release_firmaware" .. which unfortunately has a small typo) Regards, Christian > Fixes: cd8d3d321285 ("p54spi: p54spi driver") > Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> > --- > drivers/net/wireless/intersil/p54/p54spi.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/intersil/p54/p54spi.c b/drivers/net/wireless/intersil/p54/p54spi.c > index f99b7ba69fc3..679ac164c994 100644 > --- a/drivers/net/wireless/intersil/p54/p54spi.c > +++ b/drivers/net/wireless/intersil/p54/p54spi.c > @@ -650,14 +650,16 @@ static int p54spi_probe(struct spi_device *spi) > > ret = p54spi_request_eeprom(hw); > if (ret) > - goto err_free_common; > + goto err_release_firmaware; > > ret = p54_register_common(hw, &priv->spi->dev); > if (ret) > - goto err_free_common; > + goto err_release_firmaware; > > return 0; > > +err_release_firmaware: > + release_firmware(priv->firmware); > err_free_common: > free_irq(gpio_to_irq(p54spi_gpio_irq), spi); > err_free_gpio_irq: > -- > 2.34.1 >