In seccomp mode, SIGCHLD serves as the child reaper IRQ. So, let's handle it in the same way as other IRQ signals, including preventing them from nesting with each other and allowing interrupted syscalls to be automatically restarted.
Signed-off-by: Tiwei Bie <[email protected]> --- arch/um/os-Linux/signal.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/um/os-Linux/signal.c b/arch/um/os-Linux/signal.c index de372b936a80..6c993bc8c78e 100644 --- a/arch/um/os-Linux/signal.c +++ b/arch/um/os-Linux/signal.c @@ -16,6 +16,7 @@ #include <as-layout.h> #include <kern_util.h> #include <os.h> +#include <skas.h> #include <sysdep/mcontext.h> #include <um_malloc.h> #include <sys/ucontext.h> @@ -224,6 +225,8 @@ void set_handler(int sig) sigaddset(&action.sa_mask, SIGIO); sigaddset(&action.sa_mask, SIGWINCH); sigaddset(&action.sa_mask, SIGALRM); + if (using_seccomp) + sigaddset(&action.sa_mask, SIGCHLD); if (sig == SIGSEGV) flags |= SA_NODEFER; -- 2.34.1
