arm64: signal: Force SIGKILL for unknown signals in force_signal_inject
authorWill Deacon <will.deacon@arm.com>
Tue, 20 Feb 2018 18:08:40 +0000 (18:08 +0000)
committerWill Deacon <will.deacon@arm.com>
Tue, 6 Mar 2018 18:52:23 +0000 (18:52 +0000)
For signals other than SIGKILL or those with siginfo_layout(signal, code)
== SIL_FAULT then force_signal_inject does not initialise the siginfo_t
properly. Since the signal number is determined solely by the caller,
simply WARN on unknown signals and force to SIGKILL.

Reported-by: Dave Martin <Dave.Martin@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/traps.c

index c478d8e276491598915665b1958023ec4b70a260..3f52c07b4bf4322bbaa9fd98195d1b45afbee19a 100644 (file)
@@ -331,6 +331,12 @@ void force_signal_inject(int signal, int code, unsigned long address)
                break;
        }
 
+       /* Force signals we don't understand to SIGKILL */
+       if (WARN_ON(signal != SIGKILL ||
+                   siginfo_layout(signal, code) != SIL_FAULT)) {
+               signal = SIGKILL;
+       }
+
        if (unhandled_signal(current, signal) &&
            show_unhandled_signals_ratelimited()) {
                pr_info("%s[%d]: %s: pc=%08llx\n",