diff --git a/compel/include/uapi/infect.h b/compel/include/uapi/infect.h index 38051f437..c444a6edd 100644 --- a/compel/include/uapi/infect.h +++ b/compel/include/uapi/infect.h @@ -92,6 +92,7 @@ extern int compel_unmap(struct parasite_ctl *ctl, unsigned long addr); extern int compel_mode_native(struct parasite_ctl *ctl); extern k_rtsigset_t *compel_task_sigmask(struct parasite_ctl *ctl); +extern k_rtsigset_t *compel_thread_sigmask(struct thread_ctx *tctx); struct rt_sigframe; diff --git a/compel/src/lib/infect.c b/compel/src/lib/infect.c index 237ea7ae0..c8e954bce 100644 --- a/compel/src/lib/infect.c +++ b/compel/src/lib/infect.c @@ -1255,9 +1255,14 @@ int compel_mode_native(struct parasite_ctl *ctl) return user_regs_native(&ctl->orig.regs); } +k_rtsigset_t *compel_thread_sigmask(struct thread_ctx *tctx) +{ + return &tctx->sigmask; +} + k_rtsigset_t *compel_task_sigmask(struct parasite_ctl *ctl) { - return &ctl->orig.sigmask; + return compel_thread_sigmask(&ctl->orig); } struct infect_ctx *compel_infect_ctx(struct parasite_ctl *ctl) diff --git a/criu/parasite-syscall.c b/criu/parasite-syscall.c index dc7a831e4..7efad53ab 100644 --- a/criu/parasite-syscall.c +++ b/criu/parasite-syscall.c @@ -201,7 +201,7 @@ int parasite_dump_thread_seized(struct parasite_ctl *ctl, int id, return -1; tc->has_blk_sigset = true; - memcpy(&tc->blk_sigset, &octx.sigmask, sizeof(k_rtsigset_t)); + memcpy(&tc->blk_sigset, compel_thread_sigmask(&octx), sizeof(k_rtsigset_t)); ret = compel_run_in_thread(pid, PARASITE_CMD_DUMP_THREAD, ctl, &octx); if (ret) {