From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Gleixner Subject: Re: [PATCH 01/28] genirq: Add missing "else" in irq_shutdown() Date: Mon, 12 Sep 2011 09:53:56 +0200 (CEST) Message-ID: References: <1315742394-16036-1-git-send-email-geert@linux-m68k.org> <1315742394-16036-2-git-send-email-geert@linux-m68k.org> Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Return-path: In-Reply-To: <1315742394-16036-2-git-send-email-geert@linux-m68k.org> Sender: linux-m68k-owner@vger.kernel.org List-Id: linux-m68k@vger.kernel.org To: Geert Uytterhoeven Cc: linux-m68k@lists.linux-m68k.org, linux-kernel@vger.kernel.org On Sun, 11 Sep 2011, Geert Uytterhoeven wrote: > If an irq_chip provides .irq_shutdown(), but neither of .irq_disable() or > .irq_mask(), free_irq() crashes when jumping to NULL. > Fix this by only trying .irq_disable() and .irq_mask() if there's no > .irq_shutdown() provided. > > This revives the symmetry with irq_startup(), which tries .irq_startup(), > .irq_enable(), and irq_unmask(), and makes it consistent with the comment for > irq_chip.irq_shutdown() in , which says: > > * @irq_shutdown: shut down the interrupt (defaults to ->disable if NULL) > > This is also how __free_irq() behaved before the big overhaul, cfr. e.g. > 3b56f0585fd4c02d047dc406668cb40159b2d340 ("genirq: Remove bogus conditional"), > where the core interrupt code always overrode .irq_shutdown() to > .irq_disable() if .irq_shutdown() was NULL. > > Signed-off-by: Geert Uytterhoeven > Cc: Thomas Gleixner Applied into irq/urgent with a note to stable@... Thanks, tglx