Message ID | 551A9953.9080903@redhat.com |
---|---|
State | New |
Headers | show |
On 31 March 2015 at 13:55, Paolo Bonzini <pbonzini@redhat.com> wrote: > > > 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? Well, I don't really understand the rcu stuff, so I can't say... -- PMM
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