Message ID | 20221119071007.3858043-1-cuigaosheng1@huawei.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] net: ethernet: wiznet: w5300: free irq when alloc link_name failed in w5300_hw_probe() | expand |
On Sat, Nov 19, 2022 at 03:10:07PM +0800, Gaosheng Cui wrote: > When alloc link_name failed in w5300_hw_probe(), irq has not been > freed. Fix it. > > Fixes: 9899b81e7ca5 ("Ethernet driver for the WIZnet W5300 chip") > Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com> > --- > drivers/net/ethernet/wiznet/w5300.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/wiznet/w5300.c b/drivers/net/ethernet/wiznet/w5300.c > index b0958fe8111e..5571d4c365e9 100644 > --- a/drivers/net/ethernet/wiznet/w5300.c > +++ b/drivers/net/ethernet/wiznet/w5300.c > @@ -572,8 +572,10 @@ static int w5300_hw_probe(struct platform_device *pdev) > priv->link_gpio = data ? data->link_gpio : -EINVAL; > if (gpio_is_valid(priv->link_gpio)) { > char *link_name = devm_kzalloc(&pdev->dev, 16, GFP_KERNEL); > - if (!link_name) > + if (!link_name) { > + free_irq(irq, ndev); > return -ENOMEM; > + } > snprintf(link_name, 16, "%s-link", name); > priv->link_irq = gpio_to_irq(priv->link_gpio); > if (request_any_context_irq(priv->link_irq, w5300_detect_link, 579 if (request_any_context_irq(priv->link_irq, w5300_detect_link, 580 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, 581 link_name, priv->ndev) < 0) 582 priv->link_gpio = -EINVAL; You should call to same free_irq(irq, ndev) in this "if" too. Thanks > -- > 2.25.1 >
> 579 if (request_any_context_irq(priv->link_irq, w5300_detect_link, > 580 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, > 581 link_name, priv->ndev) < 0) > 582 priv->link_gpio = -EINVAL; > > You should call to same free_irq(irq, ndev) in this "if" too. > > Thanks Thanks for taking time to review this patch, if request_any_context_irq(...) failed, w5300_hw_probe will return 0(success), should I call the free_irq(...) in this case? Thanks. On 2022/11/22 20:28, Leon Romanovsky wrote: > On Sat, Nov 19, 2022 at 03:10:07PM +0800, Gaosheng Cui wrote: >> When alloc link_name failed in w5300_hw_probe(), irq has not been >> freed. Fix it. >> >> Fixes: 9899b81e7ca5 ("Ethernet driver for the WIZnet W5300 chip") >> Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com> >> --- >> drivers/net/ethernet/wiznet/w5300.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/ethernet/wiznet/w5300.c b/drivers/net/ethernet/wiznet/w5300.c >> index b0958fe8111e..5571d4c365e9 100644 >> --- a/drivers/net/ethernet/wiznet/w5300.c >> +++ b/drivers/net/ethernet/wiznet/w5300.c >> @@ -572,8 +572,10 @@ static int w5300_hw_probe(struct platform_device *pdev) >> priv->link_gpio = data ? data->link_gpio : -EINVAL; >> if (gpio_is_valid(priv->link_gpio)) { >> char *link_name = devm_kzalloc(&pdev->dev, 16, GFP_KERNEL); >> - if (!link_name) >> + if (!link_name) { >> + free_irq(irq, ndev); >> return -ENOMEM; >> + } >> snprintf(link_name, 16, "%s-link", name); >> priv->link_irq = gpio_to_irq(priv->link_gpio); >> if (request_any_context_irq(priv->link_irq, w5300_detect_link, > 579 if (request_any_context_irq(priv->link_irq, w5300_detect_link, > 580 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, > 581 link_name, priv->ndev) < 0) > 582 priv->link_gpio = -EINVAL; > > You should call to same free_irq(irq, ndev) in this "if" too. > > Thanks > >> -- >> 2.25.1 >> > .
diff --git a/drivers/net/ethernet/wiznet/w5300.c b/drivers/net/ethernet/wiznet/w5300.c index b0958fe8111e..5571d4c365e9 100644 --- a/drivers/net/ethernet/wiznet/w5300.c +++ b/drivers/net/ethernet/wiznet/w5300.c @@ -572,8 +572,10 @@ static int w5300_hw_probe(struct platform_device *pdev) priv->link_gpio = data ? data->link_gpio : -EINVAL; if (gpio_is_valid(priv->link_gpio)) { char *link_name = devm_kzalloc(&pdev->dev, 16, GFP_KERNEL); - if (!link_name) + if (!link_name) { + free_irq(irq, ndev); return -ENOMEM; + } snprintf(link_name, 16, "%s-link", name); priv->link_irq = gpio_to_irq(priv->link_gpio); if (request_any_context_irq(priv->link_irq, w5300_detect_link,
When alloc link_name failed in w5300_hw_probe(), irq has not been freed. Fix it. Fixes: 9899b81e7ca5 ("Ethernet driver for the WIZnet W5300 chip") Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com> --- drivers/net/ethernet/wiznet/w5300.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)