Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932650AbbFTRUl (ORCPT ); Sat, 20 Jun 2015 13:20:41 -0400 Received: from terminus.zytor.com ([198.137.202.10]:60469 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932423AbbFTRUg (ORCPT ); Sat, 20 Jun 2015 13:20:36 -0400 Date: Sat, 20 Jun 2015 10:20:14 -0700 From: tip-bot for Thomas Gleixner Message-ID: Cc: mingo@kernel.org, tglx@linutronix.de, jiang.liu@linux.intel.com, hpa@zytor.com, linux-kernel@vger.kernel.org, bp@alien8.de, sergey.senozhatsky@gmail.com Reply-To: linux-kernel@vger.kernel.org, hpa@zytor.com, jiang.liu@linux.intel.com, mingo@kernel.org, tglx@linutronix.de, sergey.senozhatsky@gmail.com, bp@alien8.de In-Reply-To: References: To: linux-tip-commits@vger.kernel.org Subject: [tip:irq/core] genirq: Remove bogus restriction in irq_move_mask_irq() Git-Commit-ID: a614a610ac9b28f195d790d25be72d26f345c53a X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2039 Lines: 56 Commit-ID: a614a610ac9b28f195d790d25be72d26f345c53a Gitweb: http://git.kernel.org/tip/a614a610ac9b28f195d790d25be72d26f345c53a Author: Thomas Gleixner AuthorDate: Sat, 20 Jun 2015 12:05:40 +0200 Committer: Thomas Gleixner CommitDate: Sat, 20 Jun 2015 19:05:14 +0200 genirq: Remove bogus restriction in irq_move_mask_irq() If an interrupt is marked with the no balancing flag, we still allow setting the affinity for such an interrupt from the kernel itself, but for interrupts which move the affinity from interrupt context via irq_move_mask_irq() this runs into a check for the no balancing flag, which in turn ends up with an endless storm of stack dumps because the move pending flag is not reset. Allow the move for interrupts which have the no balancing flag set and clear the move pending bit before checking for interrupts with the per cpu flag set. Reported-by: Sergey Senozhatsky Cc: Borislav Petkov Cc: Jiang Liu Link: http://lkml.kernel.org/r/alpine.DEB.2.11.1506201002570.4107@nanos Signed-off-by: Thomas Gleixner --- kernel/irq/migration.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/irq/migration.c b/kernel/irq/migration.c index dd203e2..37ddb7b 100644 --- a/kernel/irq/migration.c +++ b/kernel/irq/migration.c @@ -12,16 +12,16 @@ void irq_move_masked_irq(struct irq_data *idata) if (likely(!irqd_is_setaffinity_pending(&desc->irq_data))) return; + irqd_clr_move_pending(&desc->irq_data); + /* * Paranoia: cpu-local interrupts shouldn't be calling in here anyway. */ - if (!irqd_can_balance(&desc->irq_data)) { + if (irqd_is_per_cpu(&desc->irq_data)) { WARN_ON(1); return; } - irqd_clr_move_pending(&desc->irq_data); - if (unlikely(cpumask_empty(desc->pending_mask))) return; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in Please read the FAQ at http://www.tux.org/lkml/