| Submitter | Giuseppe CAVALLARO |
|---|---|
| Date | Feb. 9, 2012, 7:55 a.m. |
| Message ID | <1328774114-28894-1-git-send-email-peppe.cavallaro@st.com> |
| Download | mbox | patch |
| Permalink | /patch/140322/ |
| State | Changes Requested |
| Delegated to: | David Miller |
| Headers | show |
Comments
From: Giuseppe CAVALLARO <peppe.cavallaro@st.com> Date: Thu, 9 Feb 2012 08:55:13 +0100 > From: Francesco Virlinzi <francesco.virlinzi@st.com> > > In case of we use an external Wake-Up IRQ line > (priv->wol_irq != dev->irq) we need to invoke the > request_irq. > > Signed-off-by: Francesco Virlinzi <francesco.virlinzi@st.com> > Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> You never free the IRQ in the driver close path, so it leaks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 2/9/2012 8:02 PM, David Miller wrote: > From: Giuseppe CAVALLARO <peppe.cavallaro@st.com> > Date: Thu, 9 Feb 2012 08:55:13 +0100 > >> From: Francesco Virlinzi <francesco.virlinzi@st.com> >> >> In case of we use an external Wake-Up IRQ line >> (priv->wol_irq != dev->irq) we need to invoke the >> request_irq. >> >> Signed-off-by: Francesco Virlinzi <francesco.virlinzi@st.com> >> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> > > You never free the IRQ in the driver close path, so it leaks. Yes you are right. I'm reviewing the patch and send it again. Thx peppe > -- > To unsubscribe from this list: send the line "unsubscribe netdev" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Patch
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 96fa2da..36ee77f 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -1047,6 +1047,17 @@ static int stmmac_open(struct net_device *dev) goto open_error; } + /* Request the Wake IRQ in case of another line is used for WoL */ + if (priv->wol_irq != dev->irq) { + ret = request_irq(priv->wol_irq, stmmac_interrupt, + IRQF_SHARED, dev->name, dev); + if (unlikely(ret < 0)) { + pr_err("%s: ERROR: allocating the ext WoL IRQ %d " + "(error: %d)\n", __func__, priv->wol_irq, ret); + goto open_error_wolirq; + } + } + /* Enable the MAC Rx/Tx */ stmmac_set_mac(priv->ioaddr, true); @@ -1087,6 +1098,9 @@ static int stmmac_open(struct net_device *dev) return 0; +open_error_wolirq: + free_irq(dev->irq, dev); + open_error: #ifdef CONFIG_STMMAC_TIMER kfree(priv->tm);