Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp3969822img; Mon, 25 Mar 2019 23:48:18 -0700 (PDT) X-Google-Smtp-Source: APXvYqwmU82FyyNvZxeq+ChJtMS4hnbYd9Gcuu0VNc8VSLwQwN2eHy3sVkRFYwKKxszSDd2ucNRn X-Received: by 2002:a63:6c43:: with SMTP id h64mr26539534pgc.22.1553582898332; Mon, 25 Mar 2019 23:48:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553582898; cv=none; d=google.com; s=arc-20160816; b=Q+mITgxky8QNJR1sIbZqax9YmhRKl7qSnJYFH3gj1/BUxTDTuHAYMVMTroeEvfvjKa gX/dU0lyEwjQNeIV6W363Tb+QhNtwPnTwDUvfQUo8UoWfFwfeJWSXheDjouwER7zX4bZ F25BWnF5exUOZTXwuAtoGq96Oxd1MCys/2aryld98IYi7s+7bzkIBk1bcCA5iRJlIdFo G4t8pObUAM8Z/paYSGZ+FmXPftFi3r5wCeh1u2I69DY9CYpz2StgRE4dRBDTsEwegu2P 1yI24tWlWeK3sZpSm7w5ujjcv1BxNt/3wmtLB48La29++a73tjKVtLl9ebrXqTTwWhGh qGMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=QNPqff5FumyDDhMct8Tl7Nq6bo0izJlR5ld8lWcRGDI=; b=EXPL+/err1XRPKm4IutOrE/HGgg3ue8yWmJSFV8XXS/yXJYJCZp43F9Pktc6H99dpT CNVGQrK+taZJn2I+cEIIHQzD67UocSkrfVdrVCE3CGfJQoIka6K+1V3nwHLrzLz5ocJ2 nirouWKXJrFS6YXFNV5q9B2H4PExcZnSt0FY7ayZ9DpIcEiUt0heuULWHGDGYaR1Phc8 jTdosNQQP0zYkG9A+ETcUOIutYH1vWJMKN+SeQYLtoq9tfIydymHIpimwcQqh1u00gId Oc4sVXNsd6od0zmoACPDlHYcKI/4GTefUx5RtEgvUQJDz0RprpbnEtj0ezCpQtepOOx9 48GA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=M6yP3+d6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d12si15920966pgt.59.2019.03.25.23.48.03; Mon, 25 Mar 2019 23:48:18 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=M6yP3+d6; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731238AbfCZGby (ORCPT + 99 others); Tue, 26 Mar 2019 02:31:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:41276 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731215AbfCZGbw (ORCPT ); Tue, 26 Mar 2019 02:31:52 -0400 Received: from localhost (unknown [104.132.152.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 396F220863; Tue, 26 Mar 2019 06:31:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1553581911; bh=tEPTFH14pQM5GL8qMFkugEi9XfjTGrs5r/LpIHO+8Xk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=M6yP3+d6TSRtTcGQGQUDMS0pPECtfYvAk6oE4zMJVYbZsYckoNXuH31nRTs+trJYI r31+hUZHgXaH4aNdPV+OrzZUp4Isf4DB6lHj9TgLAbSlk1i/+tKJboXplJUtJ3qGU/ 02ewrysADeF3PpErNFP89IdbyLWoygYbkIQRlQSM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Qiao Zhou , Will Deacon , Arnd Bergmann Subject: [PATCH 4.9 22/30] arm64: traps: disable irq in die() Date: Tue, 26 Mar 2019 15:30:01 +0900 Message-Id: <20190326042608.316746710@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190326042607.558087893@linuxfoundation.org> References: <20190326042607.558087893@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Qiao Zhou commit 6f44a0bacb79a03972c83759711832b382b1b8ac upstream. In current die(), the irq is disabled for __die() handle, not including the possible panic() handling. Since the log in __die() can take several hundreds ms, new irq might come and interrupt current die(). If the process calling die() holds some critical resource, and some other process scheduled later also needs it, then it would deadlock. The first panic will not be executed. So here disable irq for the whole flow of die(). Signed-off-by: Qiao Zhou Signed-off-by: Will Deacon Signed-off-by: Arnd Bergmann Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kernel/traps.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c @@ -266,10 +266,12 @@ void die(const char *str, struct pt_regs { struct thread_info *thread = current_thread_info(); int ret; + unsigned long flags; + + raw_spin_lock_irqsave(&die_lock, flags); oops_enter(); - raw_spin_lock_irq(&die_lock); console_verbose(); bust_spinlocks(1); ret = __die(str, err, thread, regs); @@ -279,13 +281,15 @@ void die(const char *str, struct pt_regs bust_spinlocks(0); add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE); - raw_spin_unlock_irq(&die_lock); oops_exit(); if (in_interrupt()) panic("Fatal exception in interrupt"); if (panic_on_oops) panic("Fatal exception"); + + raw_spin_unlock_irqrestore(&die_lock, flags); + if (ret != NOTIFY_STOP) do_exit(SIGSEGV); }