OSDN Git Service

linux-user: Let sigaction query SIGKILL/SIGSTOP
authorIlya Leoshkevich <iii@linux.ibm.com>
Tue, 1 Jun 2021 14:55:59 +0000 (16:55 +0200)
committerLaurent Vivier <laurent@vivier.eu>
Sun, 20 Jun 2021 14:21:01 +0000 (16:21 +0200)
The kernel allows doing this, so let's allow this in qemu as well.
Valgrind relies on this.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20210601145600.3131040-2-iii@linux.ibm.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
linux-user/signal.c

index 0f19c59..a8faea6 100644 (file)
@@ -853,7 +853,11 @@ int do_sigaction(int sig, const struct target_sigaction *act,
 
     trace_signal_do_sigaction_guest(sig, TARGET_NSIG);
 
-    if (sig < 1 || sig > TARGET_NSIG || sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP) {
+    if (sig < 1 || sig > TARGET_NSIG) {
+        return -TARGET_EINVAL;
+    }
+
+    if (act && (sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP)) {
         return -TARGET_EINVAL;
     }