Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp515033yba; Mon, 1 Apr 2019 10:50:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqwuMVItG3SUZm593d6OsmuvCZQcuSX10Pr3Qz2L9FmhBkNWfC4e79gbpj6wUYc+cx6hZcix X-Received: by 2002:a17:902:694c:: with SMTP id k12mr3014200plt.149.1554141048682; Mon, 01 Apr 2019 10:50:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554141048; cv=none; d=google.com; s=arc-20160816; b=0by6sk9OCCbx7cKUi7/If/8Hi5w3XrpkaluzXERnPB2emjdU9wWx5Y6+SICo8SiG4E sSmtW2SmsXhSrVt5A2oaK78X0OG3lgNH3wlcFkdy+9tvGSC22NgYJcdWY8l9B7dlCJ+F zMwdDdzISqRCe5y7QkW6qawjBMv4F09GL9DFefEjkXrp8otcUHVz0RP+OAQ1gkIOBWzZ QSGZ9h1oZwARROFcpkH3CeCx6fvjYu/MGwEtKYvcitoh7zvU+Wzaf+Y1AIxsDwHggx7n bbNo5al95VxdqXMHh0JjgRfk7eZoYFTvDGpqs/YhJJAmb7D/JljzrMhdwF+PTTm6/IaZ Nt6w== 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=T87ZzpfLHXP45uHcRxpPCjC0iiR2bXP3Ae3UEw2elFQ=; b=LP2wyAyDo39FSmXfxtfSr+5UYuz2/9ikmeq3Eh1H0QUQOh/pOj1EM5KtpmzgtCG7kM rtGZxsXmXsF7O1fYqf5wpRsC6OvDpPoY+WZIQFBUyRLqeBuReUS1p0Njbx9tM1AwYtf2 +ZwMhSSwApj8NVe53rWgXtJ44o75sxApGGZPJxFeqA/D65JlF/qNeI95Qu+5ohyOj1iO 3psH1vYKVu7OUC7H1qGqY/D6I1tNniVC43NC5IDNvx6dFBSqmLlf6qqx+c9vqvQcw8g8 wfsc4nU1P2y60yZhAHJapdVWPl90pa7TX9HAWdAPGonbDC8jbT+da/SdLV/3YIlyE1kM IhJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xLrsgemZ; 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 h6si8862810pfc.255.2019.04.01.10.50.32; Mon, 01 Apr 2019 10:50:48 -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=xLrsgemZ; 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 S1733165AbfDARau (ORCPT + 99 others); Mon, 1 Apr 2019 13:30:50 -0400 Received: from mail.kernel.org ([198.145.29.99]:37950 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732760AbfDARaq (ORCPT ); Mon, 1 Apr 2019 13:30:46 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 6D10520880; Mon, 1 Apr 2019 17:30:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554139845; bh=4EpMchv+8Adtq0UQRmOyI/xx8HFGdMtkEteoehtrBjw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xLrsgemZA/Q+mPr/5WNyVzJSkpENMdsbG25cQQNY/rKeyJ7UHvrH4pQoAGmqbSRTh VwXtcBqt6xWHCXGi9pSaR9rhOFHXO2hUqsztzRG304PE8bt/+sjvXAgheqhmhwdoLt 2S8bowa+W+XUbssZEf2sbGTGnNmrVNoSESuZFfqQ= 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.4 031/131] arm64: traps: disable irq in die() Date: Mon, 1 Apr 2019 19:01:41 +0200 Message-Id: <20190401170054.686711639@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190401170051.645954551@linuxfoundation.org> References: <20190401170051.645954551@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.4-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 @@ -239,10 +239,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); @@ -252,13 +254,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); }