All of lore.kernel.org
 help / color / mirror / Atom feed
From: <gregkh@linuxfoundation.org>
To: alexandru.elisei@arm.com,amit.kachhap@arm.com,anshuman.khandual@arm.com,broonie@kernel.org,catalin.marinas@arm.com,ebiederm@xmission.com,gregkh@linuxfoundation.org,haibinzhang@tencent.com,hewenliang4@huawei.com,james.morse@arm.com,linux-arm-kernel@lists.infradead.org,mark.rutland@arm.com,maz@kernel.org,pcc@google.com,ruanjinjie@huawei.com,sashal@kernel.org,scott@os.amperecomputing.com,stable@kernel.org,will@kernel.org
Cc: <stable-commits@vger.kernel.org>
Subject: Patch "arm64: consistently pass ESR_ELx to die()" has been added to the 5.15-stable tree
Date: Mon, 16 Oct 2023 10:03:56 +0200	[thread overview]
Message-ID: <2023101656-crispy-shaded-674a@gregkh> (raw)
In-Reply-To: <20231011100655.979626-4-ruanjinjie@huawei.com>


This is a note to let you know that I've just added the patch titled

    arm64: consistently pass ESR_ELx to die()

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     arm64-consistently-pass-esr_elx-to-die.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.


From ruanjinjie@huawei.com Wed Oct 11 12:07:40 2023
From: Jinjie Ruan <ruanjinjie@huawei.com>
Date: Wed, 11 Oct 2023 10:06:43 +0000
Subject: arm64: consistently pass ESR_ELx to die()
To: <catalin.marinas@arm.com>, <will@kernel.org>, <mark.rutland@arm.com>, <broonie@kernel.org>, <anshuman.khandual@arm.com>, <alexandru.elisei@arm.com>, <sashal@kernel.org>, <maz@kernel.org>, <gregkh@linuxfoundation.org>, <james.morse@arm.com>, <pcc@google.com>, <scott@os.amperecomputing.com>, <ebiederm@xmission.com>, <haibinzhang@tencent.com>, <hewenliang4@huawei.com>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <stable@kernel.org>
Cc: <ruanjinjie@huawei.com>
Message-ID: <20231011100655.979626-4-ruanjinjie@huawei.com>

From: Mark Rutland <mark.rutland@arm.com>

commit 0f2cb928a1547ae8f89e80a4b8df2c6c02ae5f96 upstream.

Currently, bug_handler() and kasan_handler() call die() with '0' as the
'err' value, whereas die_kernel_fault() passes the ESR_ELx value.

For consistency, this patch ensures we always pass the ESR_ELx value to
die(). As this is only called for exceptions taken from kernel mode,
there should be no user-visible change as a result of this patch.

For UNDEFINED exceptions, I've had to modify do_undefinstr() and its
callers to pass the ESR_ELx value. In all cases the ESR_ELx value had
already been read and was available.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Alexandru Elisei <alexandru.elisei@arm.com>
Cc: Amit Daniel Kachhap <amit.kachhap@arm.com>
Cc: James Morse <james.morse@arm.com>
Cc: Will Deacon <will@kernel.org>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Reviewed-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20220913101732.3925290-4-mark.rutland@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 arch/arm64/include/asm/exception.h |    2 +-
 arch/arm64/kernel/entry-common.c   |   14 +++++++-------
 arch/arm64/kernel/traps.c          |   14 +++++++-------
 3 files changed, 15 insertions(+), 15 deletions(-)

--- a/arch/arm64/include/asm/exception.h
+++ b/arch/arm64/include/asm/exception.h
@@ -58,7 +58,7 @@ asmlinkage void call_on_irq_stack(struct
 asmlinkage void asm_exit_to_user_mode(struct pt_regs *regs);
 
 void do_mem_abort(unsigned long far, unsigned long esr, struct pt_regs *regs);
-void do_undefinstr(struct pt_regs *regs);
+void do_undefinstr(struct pt_regs *regs, unsigned long esr);
 void do_bti(struct pt_regs *regs);
 void do_debug_exception(unsigned long addr_if_watchpoint, unsigned long esr,
 			struct pt_regs *regs);
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -371,11 +371,11 @@ static void noinstr el1_pc(struct pt_reg
 	exit_to_kernel_mode(regs);
 }
 
-static void noinstr el1_undef(struct pt_regs *regs)
+static void noinstr el1_undef(struct pt_regs *regs, unsigned long esr)
 {
 	enter_from_kernel_mode(regs);
 	local_daif_inherit(regs);
-	do_undefinstr(regs);
+	do_undefinstr(regs, esr);
 	local_daif_mask();
 	exit_to_kernel_mode(regs);
 }
@@ -417,7 +417,7 @@ asmlinkage void noinstr el1h_64_sync_han
 		break;
 	case ESR_ELx_EC_SYS64:
 	case ESR_ELx_EC_UNKNOWN:
-		el1_undef(regs);
+		el1_undef(regs, esr);
 		break;
 	case ESR_ELx_EC_BREAKPT_CUR:
 	case ESR_ELx_EC_SOFTSTP_CUR:
@@ -554,11 +554,11 @@ static void noinstr el0_sp(struct pt_reg
 	exit_to_user_mode(regs);
 }
 
-static void noinstr el0_undef(struct pt_regs *regs)
+static void noinstr el0_undef(struct pt_regs *regs, unsigned long esr)
 {
 	enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
-	do_undefinstr(regs);
+	do_undefinstr(regs, esr);
 	exit_to_user_mode(regs);
 }
 
@@ -639,7 +639,7 @@ asmlinkage void noinstr el0t_64_sync_han
 		el0_pc(regs, esr);
 		break;
 	case ESR_ELx_EC_UNKNOWN:
-		el0_undef(regs);
+		el0_undef(regs, esr);
 		break;
 	case ESR_ELx_EC_BTI:
 		el0_bti(regs);
@@ -755,7 +755,7 @@ asmlinkage void noinstr el0t_32_sync_han
 	case ESR_ELx_EC_CP14_MR:
 	case ESR_ELx_EC_CP14_LS:
 	case ESR_ELx_EC_CP14_64:
-		el0_undef(regs);
+		el0_undef(regs, esr);
 		break;
 	case ESR_ELx_EC_CP15_32:
 	case ESR_ELx_EC_CP15_64:
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -486,7 +486,7 @@ void arm64_notify_segfault(unsigned long
 	force_signal_inject(SIGSEGV, code, addr, 0);
 }
 
-void do_undefinstr(struct pt_regs *regs)
+void do_undefinstr(struct pt_regs *regs, unsigned long esr)
 {
 	/* check for AArch32 breakpoint instructions */
 	if (!aarch32_break_handler(regs))
@@ -496,7 +496,7 @@ void do_undefinstr(struct pt_regs *regs)
 		return;
 
 	if (!user_mode(regs))
-		die("Oops - Undefined instruction", regs, 0);
+		die("Oops - Undefined instruction", regs, esr);
 
 	force_signal_inject(SIGILL, ILL_ILLOPC, regs->pc, 0);
 }
@@ -755,7 +755,7 @@ void do_cp15instr(unsigned long esr, str
 		hook_base = cp15_64_hooks;
 		break;
 	default:
-		do_undefinstr(regs);
+		do_undefinstr(regs, esr);
 		return;
 	}
 
@@ -770,7 +770,7 @@ void do_cp15instr(unsigned long esr, str
 	 * EL0. Fall back to our usual undefined instruction handler
 	 * so that we handle these consistently.
 	 */
-	do_undefinstr(regs);
+	do_undefinstr(regs, esr);
 }
 NOKPROBE_SYMBOL(do_cp15instr);
 #endif
@@ -790,7 +790,7 @@ void do_sysinstr(unsigned long esr, stru
 	 * back to our usual undefined instruction handler so that we handle
 	 * these consistently.
 	 */
-	do_undefinstr(regs);
+	do_undefinstr(regs, esr);
 }
 NOKPROBE_SYMBOL(do_sysinstr);
 
@@ -966,7 +966,7 @@ static int bug_handler(struct pt_regs *r
 {
 	switch (report_bug(regs->pc, regs)) {
 	case BUG_TRAP_TYPE_BUG:
-		die("Oops - BUG", regs, 0);
+		die("Oops - BUG", regs, esr);
 		break;
 
 	case BUG_TRAP_TYPE_WARN:
@@ -1034,7 +1034,7 @@ static int kasan_handler(struct pt_regs
 	 * This is something that might be fixed at some point in the future.
 	 */
 	if (!recover)
-		die("Oops - KASAN", regs, 0);
+		die("Oops - KASAN", regs, esr);
 
 	/* If thread survives, skip over the brk instruction and continue: */
 	arm64_skip_faulting_instruction(regs, AARCH64_INSN_SIZE);


Patches currently in stable-queue which might be from ruanjinjie@huawei.com are

queue-5.15/arm64-factor-insn-read-out-of-call_undef_hook.patch
queue-5.15/arm64-rework-el0-mrs-emulation.patch
queue-5.15/arm64-die-pass-err-as-long.patch
queue-5.15/arm64-armv8_deprecated-rework-deprected-instruction-handling.patch
queue-5.15/arm64-armv8_deprecated-fix-unused-function-error.patch
queue-5.15/arm64-armv8_deprecated-move-aarch32-helper-earlier.patch
queue-5.15/arm64-consistently-pass-esr_elx-to-die.patch
queue-5.15/arm64-factor-out-el1-ssbs-emulation-hook.patch
queue-5.15/arm64-report-el1-undefs-better.patch
queue-5.15/arm64-armv8_deprecated-fold-ops-into-insn_emulation.patch
queue-5.15/arm64-rework-bti-exception-handling.patch
queue-5.15/arm64-rework-fpac-exception-handling.patch
queue-5.15/arm64-split-el0-el1-undef-handlers.patch
queue-5.15/arm64-allow-kprobes-on-el0-handlers.patch
queue-5.15/arm64-armv8_deprecated-move-emulation-functions.patch

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2023-10-16  8:05 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-11 10:06 [PATCH v5.15 00/15] arm64: Fix a concurrency issue in emulation_proc_handler() Jinjie Ruan
2023-10-11 10:06 ` Jinjie Ruan
2023-10-11 10:06 ` [PATCH v5.15 01/15] arm64: report EL1 UNDEFs better Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: report EL1 UNDEFs better" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 02/15] arm64: die(): pass 'err' as long Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: die(): pass 'err' as long" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 03/15] arm64: consistently pass ESR_ELx to die() Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` gregkh [this message]
2023-10-11 10:06 ` [PATCH v5.15 04/15] arm64: rework FPAC exception handling Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: rework FPAC exception handling" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 05/15] arm64: rework BTI exception handling Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: rework BTI exception handling" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 06/15] arm64: allow kprobes on EL0 handlers Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: allow kprobes on EL0 handlers" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 07/15] arm64: split EL0/EL1 UNDEF handlers Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: split EL0/EL1 UNDEF handlers" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 08/15] arm64: factor out EL1 SSBS emulation hook Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: factor out EL1 SSBS emulation hook" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 09/15] arm64: factor insn read out of call_undef_hook() Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: factor insn read out of call_undef_hook()" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 10/15] arm64: rework EL0 MRS emulation Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: rework EL0 MRS emulation" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 11/15] arm64: armv8_deprecated: fold ops into insn_emulation Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: armv8_deprecated: fold ops into insn_emulation" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 12/15] arm64: armv8_deprecated move emulation functions Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: armv8_deprecated move emulation functions" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 13/15] arm64: armv8_deprecated: move aarch32 helper earlier Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: armv8_deprecated: move aarch32 helper earlier" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 14/15] arm64: armv8_deprecated: rework deprected instruction handling Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: armv8_deprecated: rework deprected instruction handling" has been added to the 5.15-stable tree gregkh
2023-10-11 10:06 ` [PATCH v5.15 15/15] arm64: armv8_deprecated: fix unused-function error Jinjie Ruan
2023-10-11 10:06   ` Jinjie Ruan
2023-10-16  8:03   ` Patch "arm64: armv8_deprecated: fix unused-function error" has been added to the 5.15-stable tree gregkh
2023-10-16  8:04 ` [PATCH v5.15 00/15] arm64: Fix a concurrency issue in emulation_proc_handler() Greg KH
2023-10-16  8:04   ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2023101656-crispy-shaded-674a@gregkh \
    --to=gregkh@linuxfoundation.org \
    --cc=alexandru.elisei@arm.com \
    --cc=amit.kachhap@arm.com \
    --cc=anshuman.khandual@arm.com \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=ebiederm@xmission.com \
    --cc=haibinzhang@tencent.com \
    --cc=hewenliang4@huawei.com \
    --cc=james.morse@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=pcc@google.com \
    --cc=ruanjinjie@huawei.com \
    --cc=sashal@kernel.org \
    --cc=scott@os.amperecomputing.com \
    --cc=stable-commits@vger.kernel.org \
    --cc=stable@kernel.org \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.