On 31/03/2015 13:41, Peter Maydell wrote: >> > static void __attribute__((__constructor__)) rcu_init(void) >> > { >> > #ifdef CONFIG_POSIX >> > - pthread_atfork(rcu_init_lock, rcu_init_unlock, rcu_init_child); >> > + pthread_atfork(rcu_init_lock, rcu_init_unlock, rcu_init_unlock); >> > #endif >> > rcu_init_complete(); >> > } > So this is changing the linux-user behaviour so we no > longer do any init after fork; is that a problem?
Currently linux-user is not using RCU at all, so no. Should I add an rcu_after_fork there too? diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 4bd9543..1622ad6 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -4572,6 +4572,7 @@ static int do_fork(CPUArchState *env, unsigned int flags, abi_ulong newsp, ret = fork(); if (ret == 0) { /* Child Process. */ + rcu_after_fork(); cpu_clone_regs(env, newsp); fork_end(1); /* There is a race condition here. The parent process could Paolo