summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMark Rutland <mark.rutland@arm.com>2018-04-16 16:45:01 +0100
committerCatalin Marinas <catalin.marinas@arm.com>2018-04-18 15:13:27 +0100
commitb2d71b3cda19831ec67f49d7c6ba0214d9367b29 (patch)
tree3fe300429e6d585372fe6ac1c5048b0e5283e5ba /arch
parent800cb2e553d44541b83aa3ec45d9839385fe8ab6 (diff)
downloadlinux-0-day-b2d71b3cda19831ec67f49d7c6ba0214d9367b29.tar.gz
linux-0-day-b2d71b3cda19831ec67f49d7c6ba0214d9367b29.tar.xz
arm64: signal: don't force known signals to SIGKILL
Since commit: a7e6f1ca90354a31 ("arm64: signal: Force SIGKILL for unknown signals in force_signal_inject") ... any signal which is not SIGKILL will be upgraded to a SIGKILL be force_signal_inject(). This includes signals we do expect, such as SIGILL triggered by do_undefinstr(). Fix the check to use a logical AND rather than a logical OR, permitting signals whose layout is SIL_FAULT. Fixes: a7e6f1ca90354a31 ("arm64: signal: Force SIGKILL for unknown signals in force_signal_inject") Cc: Will Deacon <will.deacon@arm.com> Reviewed-by: Dave Martin <Dave.Martin@arm.com> Signed-off-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm64/kernel/traps.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
index ba964da31a252..1cb2749a72bfe 100644
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -366,7 +366,7 @@ void force_signal_inject(int signal, int code, unsigned long address)
}
/* Force signals we don't understand to SIGKILL */
- if (WARN_ON(signal != SIGKILL ||
+ if (WARN_ON(signal != SIGKILL &&
siginfo_layout(signal, code) != SIL_FAULT)) {
signal = SIGKILL;
}