All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martyn Welch <martyn.welch@ge.com>
To: "Emilio G. Cota" <cota@braap.org>
Cc: Greg KH <greg@kroah.com>, LKML <linux-kernel@vger.kernel.org>,
	devel@driverdev.osuosl.org,
	Juan David Gonzalez Cobas <david.cobas@gmail.com>,
	Bill Pemberton <wfp5p@virginia.edu>
Subject: Re: [PATCH 08/30] staging/vme/tsi148: fix warning in free_irq
Date: Wed, 27 Oct 2010 11:23:51 +0100	[thread overview]
Message-ID: <4CC7FDB7.5000004@ge.com> (raw)
In-Reply-To: <1288055476-19438-9-git-send-email-cota@braap.org>

On 26/10/10 02:10, Emilio G. Cota wrote:
> From: Emilio G. Cota <cota@braap.org>
> 
> The cookie passed to request_irq isn't the same as the one passed
> to free_irq, which results in the following warning:
> 
> [   63.243533] WARNING: at kernel/irq/manage.c:899 __free_irq+0x9b/0x17d()
> [   63.243533] Hardware name:
> [   63.243533] Trying to free already-free IRQ 17
> [   63.243533] Modules linked in: vme_tsi148(-) vme e1000e iTCO_wdt iTCO_vendor_support [last unloaded: scsi_wait_scan]
> [   63.243533] Pid: 2013, comm: rmmod Not tainted 2.6.35 #2
> [   63.243533] Call Trace:
> [   63.243533]  [<ffffffff81036ea3>] warn_slowpath_common+0x80/0x98
> [   63.243533]  [<ffffffff81036f4f>] warn_slowpath_fmt+0x41/0x43
> [   63.243533]  [<ffffffff810678c4>] __free_irq+0x9b/0x17d
> [   63.243533]  [<ffffffff810679d9>] free_irq+0x33/0x4e
> [   63.243533]  [<ffffffffa004a897>] tsi148_irq_exit+0x6b/0x70 [vme_tsi148]
> [...]
> [   63.243533] ---[ end trace bbf92311d969efb4 ]---
> 
> Fix it by passing the same cookie to both functions.
> 
> Signed-off-by: Emilio G. Cota <cota@braap.org>

Acked-by: Martyn Welch <martyn.welch@ge.com>

> ---
>  drivers/staging/vme/bridges/vme_tsi148.c   |   10 ++++++----
>  1 files changed, 6 insertions(+), 4 deletions(-)
>  create mode 100644 drivers/staging/vme/bridges/Module.symvers
> 
> diff --git a/drivers/staging/vme/bridges/Module.symvers b/drivers/staging/vme/bridges/Module.symvers
> new file mode 100644
> index 0000000..e69de29
> diff --git a/drivers/staging/vme/bridges/vme_tsi148.c b/drivers/staging/vme/bridges/vme_tsi148.c
> index acfbd59..5bb999f 100644
> --- a/drivers/staging/vme/bridges/vme_tsi148.c
> +++ b/drivers/staging/vme/bridges/vme_tsi148.c
> @@ -374,8 +374,10 @@ static int tsi148_irq_init(struct vme_bridge *tsi148_bridge)
>  	return 0;
>  }
>  
> -static void tsi148_irq_exit(struct tsi148_driver *bridge, struct pci_dev *pdev)
> +static void tsi148_irq_exit(struct vme_bridge *tsi148_bridge, struct pci_dev *pdev)
>  {
> +	struct tsi148_driver *bridge = tsi148_bridge->driver_priv;
> +
>  	/* Turn off interrupts */
>  	iowrite32be(0x0, bridge->base + TSI148_LCSR_INTEO);
>  	iowrite32be(0x0, bridge->base + TSI148_LCSR_INTEN);
> @@ -384,7 +386,7 @@ static void tsi148_irq_exit(struct tsi148_driver *bridge, struct pci_dev *pdev)
>  	iowrite32be(0xFFFFFFFF, bridge->base + TSI148_LCSR_INTC);
>  
>  	/* Detach interrupt handler */
> -	free_irq(pdev->irq, pdev);
> +	free_irq(pdev->irq, tsi148_bridge);
>  }
>  
>  /*
> @@ -2512,7 +2514,7 @@ err_master:
>  		kfree(master_image);
>  	}
>  
> -	tsi148_irq_exit(tsi148_device, pdev);
> +	tsi148_irq_exit(tsi148_bridge, pdev);
>  err_irq:
>  err_test:
>  	iounmap(tsi148_device->base);
> @@ -2584,7 +2586,7 @@ static void tsi148_remove(struct pci_dev *pdev)
>  	iowrite32be(0x0, bridge->base + TSI148_LCSR_INTM1);
>  	iowrite32be(0x0, bridge->base + TSI148_LCSR_INTM2);
>  
> -	tsi148_irq_exit(bridge, pdev);
> +	tsi148_irq_exit(tsi148_bridge, pdev);
>  
>  	vme_unregister_bridge(tsi148_bridge);
>  


-- 
Martyn Welch (Principal Software Engineer)   |   Registered in England and
GE Intelligent Platforms                     |   Wales (3828642) at 100
T +44(0)127322748                            |   Barbirolli Square,
Manchester,
E martyn.welch@ge.com                        |   M2 3AB  VAT:GB 927559189

  reply	other threads:[~2010-10-27 10:25 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-26  1:10 [re-send][-next] staging/vme: various fixes + new driver model for VME Emilio G. Cota
2010-10-26  1:10 ` [PATCH 01/30] staging/vme: style: convert '&(foo)' to '&foo' Emilio G. Cota
2010-10-27  9:17   ` Martyn Welch
2010-10-26  1:10 ` [PATCH 02/30] staging/vme_user: return the appropriate error code when module_init fails Emilio G. Cota
2010-10-27  9:25   ` Martyn Welch
2010-10-26  1:10 ` [PATCH 03/30] staging/vme_user: remove unreachable line Emilio G. Cota
2010-10-27  9:39   ` Martyn Welch
2010-10-26  1:10 ` [PATCH 04/30] staging/vme: allow non-dynamic allocation of bus numbers Emilio G. Cota
2010-10-27  9:41   ` Martyn Welch
2010-10-27 15:13     ` Emilio G. Cota
2010-11-04  3:40       ` Emilio G. Cota
2010-11-05 16:29         ` Martyn Welch
2010-10-26  1:10 ` [PATCH 05/30] staging/vme: fix bogus clearing of the bus number in vme_free_bus_num Emilio G. Cota
2010-10-27  9:49   ` Martyn Welch
2010-10-26  1:10 ` [PATCH 06/30] staging/vme/tsi148: use list_for_each_safe when deleting resources in .remove Emilio G. Cota
2010-10-27  9:51   ` Martyn Welch
2010-10-26  1:10 ` [PATCH 07/30] staging/vme/tsi148: remove double freeing of the IRQ " Emilio G. Cota
2010-10-27 10:01   ` Martyn Welch
2010-10-26  1:10 ` [PATCH 08/30] staging/vme/tsi148: fix warning in free_irq Emilio G. Cota
2010-10-27 10:23   ` Martyn Welch [this message]
2010-10-26  1:10 ` [PATCH 09/30] staging/vme: fill in struct device's .release, even if it's a NOOP Emilio G. Cota
2010-10-27 10:54   ` Martyn Welch
2010-10-27 14:46     ` Emilio G. Cota
2010-10-27 15:03       ` Martyn Welch
2010-10-27 15:15         ` Emilio G. Cota
2010-10-28  1:17       ` Greg KH
2010-10-28  6:07         ` Emilio G. Cota
2010-10-28 17:56           ` Greg KH
2010-11-12 11:13             ` [PATCH 00/17] Series short description Martyn Welch
2010-11-12 11:14               ` [PATCH 01/17] staging/vme: style: convert '&(foo)' to '&foo' Martyn Welch
2010-11-12 11:14               ` [PATCH 02/17] staging/vme_user: return the appropriate error code when module_init fails Martyn Welch
2010-11-12 11:14               ` [PATCH 03/17] staging/vme_user: remove unreachable line Martyn Welch
2010-11-12 11:14               ` [PATCH 04/17] staging/vme: fix bogus clearing of the bus number in vme_free_bus_num Martyn Welch
2010-11-12 11:14               ` [PATCH 05/17] staging/vme/tsi148: use list_for_each_safe when deleting resources in .remove Martyn Welch
2010-11-12 11:14               ` [PATCH 06/17] staging/vme/tsi148: remove double freeing of the IRQ " Martyn Welch
2010-11-12 11:14               ` [PATCH 07/17] staging/vme/tsi148: fix warning in free_irq Martyn Welch
2010-11-12 11:14               ` [PATCH 08/17] staging/vme/tsi148: remove unreachable line Martyn Welch
2010-11-12 11:15               ` [PATCH 09/17] staging/vme/tsi148: declare static functions as such Martyn Welch
2010-11-12 11:15               ` [PATCH 10/17] staging/vme/ca91cx42: " Martyn Welch
2010-11-12 11:15               ` [PATCH 11/17] staging/vme_user: declare private variables as static Martyn Welch
2010-11-12 11:15               ` [PATCH 12/17] staging/vme_user: use an unsigned int for counting the number of kparams Martyn Welch
2010-11-12 11:15               ` [PATCH 13/17] staging/vme_user: remove __iomem marking from kern_buf and derivates Martyn Welch
2010-11-12 11:15               ` [PATCH 14/17] staging/vme_user: mark user-space buffers with __user Martyn Welch
2010-11-12 11:15               ` [PATCH 15/17] staging/vme: mark struct vme_master_resource's base address pointer as __iomem Martyn Welch
2010-11-12 11:15               ` [PATCH 16/17] staging/vme/tsi148: mark the registers' " Martyn Welch
2010-11-12 11:15               ` [PATCH 17/17] staging/vme/ca91cx42: " Martyn Welch
2010-11-12 11:23               ` [PATCH 00/17] Series short description Martyn Welch
2010-11-12 15:11                 ` Emilio G. Cota
2010-11-12 15:52                   ` Martyn Welch
2010-11-16 19:40                 ` Greg KH
2010-10-26  1:10 ` [PATCH 10/30] staging/vme/tsi148: remove unreachable line Emilio G. Cota
2010-10-27 11:06   ` Martyn Welch
2010-10-26  1:10 ` [PATCH 11/30] staging/vme/tsi148: declare static functions as such Emilio G. Cota
2010-10-27 11:23   ` Martyn Welch
2010-10-26  1:10 ` [PATCH 12/30] staging/vme/ca91cx42: " Emilio G. Cota
2010-10-27 11:24   ` Martyn Welch
2010-10-26  1:10 ` [PATCH 13/30] staging/vme_user: declare private variables as static Emilio G. Cota
2010-10-27 11:29   ` Martyn Welch
2010-10-26  1:11 ` [PATCH 14/30] staging/vme_user: use an unsigned int for counting the number of kparams Emilio G. Cota
2010-10-27 11:29   ` Martyn Welch
2010-10-26  1:11 ` [PATCH 15/30] staging/vme_user: remove __iomem marking from kern_buf and derivates Emilio G. Cota
2010-10-27 12:20   ` Martyn Welch
2010-10-26  1:11 ` [PATCH 16/30] staging/vme_user: mark user-space buffers with __user Emilio G. Cota
2010-10-27 12:20   ` Martyn Welch
2010-10-26  1:11 ` [PATCH 17/30] staging/vme: mark struct vme_master_resource's base address pointer as __iomem Emilio G. Cota
2010-10-27 12:20   ` Martyn Welch
2010-10-26  1:11 ` [PATCH 18/30] staging/vme/tsi148: mark the registers' " Emilio G. Cota
2010-10-27 12:20   ` Martyn Welch
2010-10-26  1:11 ` [PATCH 19/30] staging/vme/ca91cx42: " Emilio G. Cota
2010-10-27 12:20   ` Martyn Welch
2010-10-26  1:11 ` [PATCH 20/30] staging/vme: trivial: rename vme_bus_num_mtx to vme_buses_lock Emilio G. Cota
2010-10-26  1:11 ` [PATCH 21/30] staging/vme: keep a list of registered buses (bridges) Emilio G. Cota
2010-10-26  1:11 ` [PATCH 22/30] staging/vme/vme_user: use __dev{init,exit} for .probe and .remove Emilio G. Cota
2010-12-03 13:44   ` [PATCH] staging/vme/vme_user: use __dev{init, exit} " Martyn Welch
2010-10-26  1:11 ` [PATCH 23/30] staging/vme_user: fix usage of the slave resources after they've been freed Emilio G. Cota
2010-12-03  9:05   ` [PATCH] " Martyn Welch
2010-10-26  1:11 ` [PATCH 24/30] staging/vme_user: remove unnecessary call to vme_slave_set Emilio G. Cota
2010-10-27 12:24   ` Martyn Welch
2010-10-27 14:59     ` Emilio G. Cota
2010-10-26  1:11 ` [PATCH 25/30] staging/vme_user: add missing calls to vme_master_free calls in .remove Emilio G. Cota
2010-12-03 14:20   ` [PATCH] " Martyn Welch
2010-12-03 14:44     ` Greg KH
2010-12-03 15:29       ` Martyn Welch
2010-10-26  1:11 ` [PATCH 26/30] staging/vme: move all contents of vme_bridge.h to vme.h Emilio G. Cota
2010-10-26  1:11 ` [PATCH 27/30] staging/vme: rework the bus model Emilio G. Cota
2010-11-04  4:16   ` Emilio G. Cota
2010-10-26  1:11 ` [PATCH 28/30] staging/vme: convert vme_* users to vme_*_ng Emilio G. Cota
2010-10-26  1:11 ` [PATCH 29/30] staging/vme: remove unused vme_* functions and related code Emilio G. Cota
2010-10-26  1:11 ` [PATCH 30/30] staging/vme: remove _ng suffixes Emilio G. Cota
2010-11-09 23:12 ` [re-send][-next] staging/vme: various fixes + new driver model for VME Greg KH
  -- strict thread matches above, loose matches on Subject: below --
2010-10-22  6:36 [-next] " Emilio G. Cota
2010-10-22  6:36 ` [PATCH 08/30] staging/vme/tsi148: fix warning in free_irq Emilio G. Cota

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4CC7FDB7.5000004@ge.com \
    --to=martyn.welch@ge.com \
    --cc=cota@braap.org \
    --cc=david.cobas@gmail.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=wfp5p@virginia.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.