[CRIU] [PATCH 1/2] restorer: unblock only SIGCHLD previously	blocked in criu
    Dmitry Safonov 
    dsafonov at virtuozzo.com
       
    Tue Mar  7 11:37:16 PST 2017
    
    
  
The purpose is to unblock previously blocked SIGCHLD, not all the
signals. IIRC, this block-unblock dancing is about a race where SIGCHLD
may come during switching to restorer blob, where CRIU handler function
is already unmapped - which will result in segmentation violation if
SIGCHLD wasn't blocked.
Fixes:3a61c38a5832 ("restore: block sigchld to remap task_entries")
Cc: Andrei Vagin <avagin at virtuozzo.com>
Signed-off-by: Dmitry Safonov <dsafonov at virtuozzo.com>
---
 criu/pie/restorer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/criu/pie/restorer.c b/criu/pie/restorer.c
index 1df5e2000ae0..9f8f969a03b5 100644
--- a/criu/pie/restorer.c
+++ b/criu/pie/restorer.c
@@ -1172,7 +1172,7 @@ long __export_restore_task(struct task_restore_args *args)
 	act.rt_sa_restorer = cr_restore_rt;
 	sys_sigaction(SIGCHLD, &act, NULL, sizeof(k_rtsigset_t));
 
-	ksigfillset(&to_block);
+	ksigemptyset(&to_block);
 	ksigaddset(&to_block, SIGCHLD);
 	ret = sys_sigprocmask(SIG_UNBLOCK, &to_block, NULL, sizeof(k_rtsigset_t));
 
-- 
2.11.1
    
    
More information about the CRIU
mailing list