Messages in this thread | | | From | Christian Lamparter <> | Date | Sun, 12 Jun 2022 22:45:20 +0200 | Subject | Re: [PATCH] p54: Fix an error handling path in p54spi_probe() |
| |
Hi,
On Sun, Jun 12, 2022 at 9:55 PM Christophe JAILLET <christophe.jaillet@wanadoo.fr> 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@wanadoo.fr> > --- > 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 >
| |