Received: by 2002:a05:6520:1682:b0:147:d1a0:b502 with SMTP id ck2csp5595428lkb; Mon, 11 Oct 2021 09:37:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzcVKPnVTgcAQ8Cf0HIS86zgkEYG5B6MIrGrepZqcIRPGqCjaP9DFh4RYT8BPK70D0dWocK X-Received: by 2002:a17:906:e2cf:: with SMTP id gr15mr26795225ejb.468.1633970259638; Mon, 11 Oct 2021 09:37:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633970259; cv=none; d=google.com; s=arc-20160816; b=JecABM5G9q902YfewIlKBrDoC4IETjE8MSz/RIEoLk2C3TkufNVDICfZt4M1yxqOPL /FJM9gKERCJE/u5fIvDTqCMEMxZYbFAmQE24ETu1L7tvKIWom88//7XmAsW+mdXZTg+Z srAcuduRhEgQpV1ruO7DbDwFHqTuerW6Zd2XIJkkDU4a44inO4Kd2qsals82YXv/7PFU 45kQx75N5RfdQPzMSGPTudfkr9MeK5Y0P0VLyX7EOEcQ6sYxd3GgaaHkt59mWlWVGLXD 7tyk/ky4G3F6tnJElkZKB58soV6LbaZqi+U6QjQbXjoj0Kiu/psv2zdgJ/oMZmRDrwpH i+BA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=auVXLNbto9w4jpSJ1glc0y7k+dNiQnrQvh8ROSZrK/o=; b=VIrybQ96M5RjO94coHASrl9hdd+m2fANbF3VkSXHQoR0RTseb6kP0UDNpWiJTRqcEN 5CbthKaSLleeafswTtHg1pAy2bA4qb0z9QTNxI55WbTJHjZHpclkIPvfBj0VP63r7WZc qz3MST6vqc8u26oq4hZCe9e2piUasq+tVq50/E0CiHxADI3oUcAVcQUI7EJ4uUSh0SB/ ZGywCJTsYrk9pxkfzI/cA1oK0qlNZ6jtqWo7jnrepj27TjCFgzBt7qxrJZ9yibMPN8z+ IJ3uWGWg2nO4XTGzvs2cZTeg4MFmgI0XX2vBJZSF9/uIxCPBRNMfhwlM+Ir+fAvyqMeD xRlA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=YWJk0iIH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cc12si11066558edb.194.2021.10.11.09.37.15; Mon, 11 Oct 2021 09:37:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=YWJk0iIH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243357AbhJKOOl (ORCPT + 99 others); Mon, 11 Oct 2021 10:14:41 -0400 Received: from mail.kernel.org ([198.145.29.99]:34546 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241841AbhJKOMQ (ORCPT ); Mon, 11 Oct 2021 10:12:16 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id BBEBC610C8; Mon, 11 Oct 2021 14:03:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1633961014; bh=+S2fTVAapzqKR2kMYhB+gS1yBxRZMlUinhch4n/ZHKU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YWJk0iIHinwo+T+52oCwb0X06P2DoI31ycLm61gqHLQNrZYW1/8gfg+COvSf3wXE0 XHbDugO5ARU+ENbq+RPu6acj7/YMcothmWunec10fSbTAoSLlGyS0xT+5BRYDtn2iB U+wQVk9Q6qp6/W24/bzKRKSBvWPdKG395APx8ZUM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nicholas Piggin , Michael Ellerman , Sasha Levin Subject: [PATCH 5.14 140/151] powerpc/traps: do not enable irqs in _exception Date: Mon, 11 Oct 2021 15:46:52 +0200 Message-Id: <20211011134522.336301949@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211011134517.833565002@linuxfoundation.org> References: <20211011134517.833565002@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Nicholas Piggin [ Upstream commit d0afd44c05f8f4e4c91487c02d43c87a31552462 ] _exception can be called by machine check handlers when the MCE hits user code (e.g., pseries and powernv). This will enable local irqs because, which is a dicey thing to do in NMI or hard irq context. This seemed to worked out okay because a userspace MCE can basically be treated like a synchronous interrupt (after async / imprecise MCEs are filtered out). Since NMI and hard irq handlers have started growing nmi_enter / irq_enter, and more irq state sanity checks, this has started to cause problems (or at least trigger warnings). The Fixes tag to the commit which introduced this rather than try to work out exactly which commit was the first that could possibly cause a problem because that may be difficult to prove. Fixes: 9f2f79e3a3c1 ("powerpc: Disable interrupts in 64-bit kernel FP and vector faults") Signed-off-by: Nicholas Piggin Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/20211004145642.1331214-3-npiggin@gmail.com Signed-off-by: Sasha Levin --- arch/powerpc/kernel/traps.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index d56254f05e17..4ac85ab15ad7 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -341,10 +341,16 @@ static bool exception_common(int signr, struct pt_regs *regs, int code, return false; } - show_signal_msg(signr, regs, code, addr); + /* + * Must not enable interrupts even for user-mode exception, because + * this can be called from machine check, which may be a NMI or IRQ + * which don't like interrupts being enabled. Could check for + * in_hardirq || in_nmi perhaps, but there doesn't seem to be a good + * reason why _exception() should enable irqs for an exception handler, + * the handlers themselves do that directly. + */ - if (arch_irqs_disabled()) - interrupt_cond_local_irq_enable(regs); + show_signal_msg(signr, regs, code, addr); current->thread.trap_nr = code; -- 2.33.0