diff mbox

rcu: do not create thread in pthread_atfork callback

Message ID 551A9953.9080903@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini March 31, 2015, 12:55 p.m. UTC
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?


Paolo

Comments

Peter Maydell March 31, 2015, 12:59 p.m. UTC | #1
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 mbox

Patch

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