about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/thread/synccall.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/thread/synccall.c b/src/thread/synccall.c
index 7c4f92bf..91ac5eb7 100644
--- a/src/thread/synccall.c
+++ b/src/thread/synccall.c
@@ -54,15 +54,15 @@ void __synccall(void (*func)(void *), void *ctx)
 	struct chain *cur, *next;
 	uint64_t oldmask;
 
-	pthread_rwlock_wrlock(&lock);
-
-	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, (uint64_t[]){-1}, &oldmask, 8);
-
 	if (!libc.threads_minus_1) {
 		func(ctx);
 		return;
 	}
 
+	pthread_rwlock_wrlock(&lock);
+
+	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, (uint64_t[]){-1}, &oldmask, 8);
+
 	sem_init(&chaindone, 0, 0);
 	sem_init(&chainlock, 0, 1);
 	chainlen = 0;