Patchwork MXC_NAND: Add correct dev_id parameter to free_irq() calls.

login
register
mail settings
Submitter Magnus Lilja
Date May 8, 2009, 7:57 p.m.
Message ID <17fbadcd7f353348afa4c56f92e0423c5b9708df.1241812369.git.lilja.magnus@gmail.com>
Download mbox | patch
Permalink /patch/27020/
State New
Headers show

Comments

Magnus Lilja - May 8, 2009, 7:57 p.m.
Make sure to pass the same dev_id data to free_irq() that was
used when calling request_irq(), otherwise we get a warning about
freeing an already free IRQ.

Signed-off-by: Magnus Lilja <lilja.magnus@gmail.com>
---

For -rc perhaps?

Got the following warning prior to fixing this:
WARNING: at /opt/git/linux-2.6/kernel/irq/manage.c:736 __free_irq+0x88/
0x1ac()
Trying to free already-free IRQ 33
Modules linked in: mxc_nand(-)
[<c0025660>] (unwind_backtrace+0x0/0xd4) from [<c0036860>] (warn_slowpath+0x68/0
x8c)
[<c0036860>] (warn_slowpath+0x68/0x8c) from [<c0060324>] (__free_irq+0x88/0x1ac)
[<c0060324>] (__free_irq+0x88/0x1ac) from [<c0060454>] (free_irq+0xc/0x18)
[<c0060454>] (free_irq+0xc/0x18) from [<bf000c24>] (mxcnd_remove+0x30/0x48 [mxc_
nand])
unwind: Index not found bf000c24

 drivers/mtd/nand/mxc_nand.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Sascha Hauer - May 14, 2009, 7:53 a.m.
Artem,

Can you pickup this one aswell?

Sascha

On Fri, May 08, 2009 at 09:57:47PM +0200, Magnus Lilja wrote:
> Make sure to pass the same dev_id data to free_irq() that was
> used when calling request_irq(), otherwise we get a warning about
> freeing an already free IRQ.
> 
> Signed-off-by: Magnus Lilja <lilja.magnus@gmail.com>
> ---
> 
> For -rc perhaps?
> 
> Got the following warning prior to fixing this:
> WARNING: at /opt/git/linux-2.6/kernel/irq/manage.c:736 __free_irq+0x88/
> 0x1ac()
> Trying to free already-free IRQ 33
> Modules linked in: mxc_nand(-)
> [<c0025660>] (unwind_backtrace+0x0/0xd4) from [<c0036860>] (warn_slowpath+0x68/0
> x8c)
> [<c0036860>] (warn_slowpath+0x68/0x8c) from [<c0060324>] (__free_irq+0x88/0x1ac)
> [<c0060324>] (__free_irq+0x88/0x1ac) from [<c0060454>] (free_irq+0xc/0x18)
> [<c0060454>] (free_irq+0xc/0x18) from [<bf000c24>] (mxcnd_remove+0x30/0x48 [mxc_
> nand])
> unwind: Index not found bf000c24
> 
>  drivers/mtd/nand/mxc_nand.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c
> index f3548d0..8a93913 100644
> --- a/drivers/mtd/nand/mxc_nand.c
> +++ b/drivers/mtd/nand/mxc_nand.c
> @@ -981,7 +981,7 @@ static int __init mxcnd_probe(struct platform_device *pdev)
>  	return 0;
>  
>  escan:
> -	free_irq(host->irq, NULL);
> +	free_irq(host->irq, host);
>  eirq:
>  	iounmap(host->regs);
>  eres:
> @@ -1001,7 +1001,7 @@ static int __devexit mxcnd_remove(struct platform_device *pdev)
>  	platform_set_drvdata(pdev, NULL);
>  
>  	nand_release(&host->mtd);
> -	free_irq(host->irq, NULL);
> +	free_irq(host->irq, host);
>  	iounmap(host->regs);
>  	kfree(host);
>  
> -- 
> 1.5.6
> 
>
Artem Bityutskiy - May 15, 2009, 12:15 p.m.
On Fri, 2009-05-08 at 21:57 +0200, Magnus Lilja wrote:
> Make sure to pass the same dev_id data to free_irq() that was
> used when calling request_irq(), otherwise we get a warning about
> freeing an already free IRQ.
> 
> Signed-off-by: Magnus Lilja <lilja.magnus@gmail.com>

Taken to l2-mtd-2.6.git
Artem Bityutskiy - May 15, 2009, 12:16 p.m.
On Thu, 2009-05-14 at 09:53 +0200, Sascha Hauer wrote:
> Artem,
> 
> Can you pickup this one aswell?

Done.

Patch

diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c
index f3548d0..8a93913 100644
--- a/drivers/mtd/nand/mxc_nand.c
+++ b/drivers/mtd/nand/mxc_nand.c
@@ -981,7 +981,7 @@  static int __init mxcnd_probe(struct platform_device *pdev)
 	return 0;
 
 escan:
-	free_irq(host->irq, NULL);
+	free_irq(host->irq, host);
 eirq:
 	iounmap(host->regs);
 eres:
@@ -1001,7 +1001,7 @@  static int __devexit mxcnd_remove(struct platform_device *pdev)
 	platform_set_drvdata(pdev, NULL);
 
 	nand_release(&host->mtd);
-	free_irq(host->irq, NULL);
+	free_irq(host->irq, host);
 	iounmap(host->regs);
 	kfree(host);