• Mathieu Desnoyers's avatar
    [POWERPC] Fix atomicity of TIF update in flush_thread() · f144e7c7
    Mathieu Desnoyers authored
    Fix atomicity of TIF update in flush_thread() for powerpc
    
    Fixes it correctly with *_ti_thread_flag.
    
    Race :
    
    parent process executing :
    sys_ptrace()
     (lock_kernel())
     (ptrace_get_task_struct(pid))
     arch_ptrace()
       ptrace_detach()
         ptrace_disable(child);
           clear_singlestep(child);
             clear_tsk_thread_flag(child, TIF_SINGLESTEP);
             (which clears the TIF_SINGLESTEP flag atomically from a different
              process)
     (put_task_struct(child))
     (unlock_kernel())
    
    And at the same time, in the child process :
    sys_execve()
     do_execve()
       search_binary_handler()
         load_elf_binary()
           flush_old_exec()
             flush_thread()
               doing a non-atomic thread flag update
    
    Applies on 2.6.20.
    Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    f144e7c7
process.c 23.7 KB