* Re: [tip:irq/urgent] PCI/keystone: Fix race in installing chained IRQ handler
[not found] <tip-2cf5a03cb29debb00681a8af1dfa9179b43404d1@git.kernel.org>
@ 2015-06-29 15:03 ` Murali Karicheri
0 siblings, 0 replies; only message in thread
From: Murali Karicheri @ 2015-06-29 15:03 UTC (permalink / raw)
To: tglx, mingo, Julia.Lawall, bhelgaas, linux-kernel, hpa,
rmk+kernel, linux-tip-commits
On 06/26/2015 03:44 PM, tip-bot for Thomas Gleixner wrote:
> Commit-ID: 2cf5a03cb29debb00681a8af1dfa9179b43404d1
> Gitweb: http://git.kernel.org/tip/2cf5a03cb29debb00681a8af1dfa9179b43404d1
> Author: Thomas Gleixner <tglx@linutronix.de>
> AuthorDate: Sun, 21 Jun 2015 20:16:09 +0200
> Committer: Thomas Gleixner <tglx@linutronix.de>
> CommitDate: Thu, 25 Jun 2015 11:57:01 +0200
>
> PCI/keystone: Fix race in installing chained IRQ handler
>
> Fix a race where a pending interrupt could be received and the handler
> called before the handler's data has been setup, by converting to
> irq_set_chained_handler_and_data().
>
> Search and conversion was done with coccinelle:
>
> @@
> expression E1, E2, E3;
> @@
> (
> -if (irq_set_chained_handler(E1, E3) != 0)
> - BUG();
> |
> -irq_set_chained_handler(E1, E3);
> )
> -irq_set_handler_data(E1, E2);
> +irq_set_chained_handler_and_data(E1, E3, E2);
>
> @@
> expression E1, E2, E3;
> @@
> (
> -if (irq_set_chained_handler(E1, E3) != 0)
> - BUG();
> ...
> |
> -irq_set_chained_handler(E1, E3);
> ...
> )
> -irq_set_handler_data(E1, E2);
> +irq_set_chained_handler_and_data(E1, E3, E2);
>
> Reported-by: Russell King <rmk+kernel@arm.linux.org.uk>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> Cc: Julia Lawall <Julia.Lawall@lip6.fr>
> Cc: Murali Karicheri <m-karicheri2@ti.com>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: linux-pci@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> ---
> drivers/pci/host/pci-keystone.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/pci/host/pci-keystone.c b/drivers/pci/host/pci-keystone.c
> index 75333b0..47cf0c1 100644
> --- a/drivers/pci/host/pci-keystone.c
> +++ b/drivers/pci/host/pci-keystone.c
> @@ -223,10 +223,9 @@ static void ks_pcie_setup_interrupts(struct keystone_pcie *ks_pcie)
> /* MSI IRQ */
> if (IS_ENABLED(CONFIG_PCI_MSI)) {
> for (i = 0; i < ks_pcie->num_msi_host_irqs; i++) {
> - irq_set_chained_handler(ks_pcie->msi_host_irqs[i],
> - ks_pcie_msi_irq_handler);
> - irq_set_handler_data(ks_pcie->msi_host_irqs[i],
> - ks_pcie);
> + irq_set_chained_handler_and_data(ks_pcie->msi_host_irqs[i],
> + ks_pcie_msi_irq_handler,
> + ks_pcie);
> }
> }
> }
>
Thomas,
Thanks for the patch.
Tested-By: Murali Karicheri <m-karicheri2@ti.com>
--
Murali Karicheri
Linux Kernel, Keystone
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2015-06-29 15:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <tip-2cf5a03cb29debb00681a8af1dfa9179b43404d1@git.kernel.org>
2015-06-29 15:03 ` [tip:irq/urgent] PCI/keystone: Fix race in installing chained IRQ handler Murali Karicheri
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.