* [PATCH net] net: ethernet: wiznet: w5300: free irq when alloc link_name failed in w5300_hw_probe()
@ 2022-11-19 7:10 Gaosheng Cui
2022-11-22 12:28 ` Leon Romanovsky
0 siblings, 1 reply; 3+ messages in thread
From: Gaosheng Cui @ 2022-11-19 7:10 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni, thomas.lendacky, shayagr,
cuigaosheng1, wsa+renesas, msink
Cc: netdev
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,
--
2.25.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH net] net: ethernet: wiznet: w5300: free irq when alloc link_name failed in w5300_hw_probe() 2022-11-19 7:10 [PATCH net] net: ethernet: wiznet: w5300: free irq when alloc link_name failed in w5300_hw_probe() Gaosheng Cui @ 2022-11-22 12:28 ` Leon Romanovsky 2022-11-22 13:05 ` cuigaosheng 0 siblings, 1 reply; 3+ messages in thread From: Leon Romanovsky @ 2022-11-22 12:28 UTC (permalink / raw) To: Gaosheng Cui Cc: davem, edumazet, kuba, pabeni, thomas.lendacky, shayagr, wsa+renesas, msink, netdev 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 > ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net] net: ethernet: wiznet: w5300: free irq when alloc link_name failed in w5300_hw_probe() 2022-11-22 12:28 ` Leon Romanovsky @ 2022-11-22 13:05 ` cuigaosheng 0 siblings, 0 replies; 3+ messages in thread From: cuigaosheng @ 2022-11-22 13:05 UTC (permalink / raw) To: Leon Romanovsky Cc: davem, edumazet, kuba, pabeni, thomas.lendacky, shayagr, wsa+renesas, msink, netdev > 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 >> > . ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-11-22 13:05 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-11-19 7:10 [PATCH net] net: ethernet: wiznet: w5300: free irq when alloc link_name failed in w5300_hw_probe() Gaosheng Cui 2022-11-22 12:28 ` Leon Romanovsky 2022-11-22 13:05 ` cuigaosheng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox