From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753173AbbGAIaO (ORCPT ); Wed, 1 Jul 2015 04:30:14 -0400 Received: from mail-wg0-f53.google.com ([74.125.82.53]:36089 "EHLO mail-wg0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753487AbbGAIaF (ORCPT ); Wed, 1 Jul 2015 04:30:05 -0400 Date: Wed, 1 Jul 2015 09:30:00 +0100 From: Lee Jones To: linux-kernel@vger.kernel.org, tglx@linutronix.de, sameo@linux.intel.com, mingo@kernel.org, Julia.Lawall@lip6.fr, hpa@zytor.com, rmk+kernel@arm.linux.org.uk Cc: linux-tip-commits@vger.kernel.org Subject: Re: [tip:irq/urgent] mfd/asic3: Fix race in installing chained IRQ handler Message-ID: <20150701083000.GI3210@x1> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 26 Jun 2015, tip-bot for Thomas Gleixner wrote: > Commit-ID: c30e30478c74e5be2fa3bbe954084a31f0d60570 > Gitweb: http://git.kernel.org/tip/c30e30478c74e5be2fa3bbe954084a31f0d60570 > Author: Thomas Gleixner > AuthorDate: Sun, 21 Jun 2015 20:16:06 +0200 > Committer: Thomas Gleixner > CommitDate: Thu, 25 Jun 2015 11:56:52 +0200 > > mfd/asic3: 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 > Signed-off-by: Thomas Gleixner > Cc: Julia Lawall > Cc: Samuel Ortiz > Cc: Lee Jones > --- > drivers/mfd/asic3.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) Applied to MFD -fixes. > diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c > index 977bd3a..120df5c 100644 > --- a/drivers/mfd/asic3.c > +++ b/drivers/mfd/asic3.c > @@ -417,9 +417,8 @@ static int __init asic3_irq_probe(struct platform_device *pdev) > asic3_write_register(asic, ASIC3_OFFSET(INTR, INT_MASK), > ASIC3_INTMASK_GINTMASK); > > - irq_set_chained_handler(asic->irq_nr, asic3_irq_demux); > + irq_set_chained_handler_and_data(asic->irq_nr, asic3_irq_demux, asic); > irq_set_irq_type(asic->irq_nr, IRQ_TYPE_EDGE_RISING); > - irq_set_handler_data(asic->irq_nr, asic); > > return 0; > } -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog