On 04/19, Martin Schwidefsky wrote: > > In a multi-threaded program any thread can call execve(). If this > is not done by the thread group leader, the de_thread() function > replaces the pid of the task that calls execve() with the pid of > thread group leader. If the task reaches user space again without > going over __switch_to() the sampling tag is still set to the old > pid. If this is the only reason for arch_change_pid() hook, then perhaps it would be better/simpler to add it into de_thread() right after change_pid(tsk, PIDTYPE_PID, task_pid(leader)) ? note also that this way arch_change_pid() doesn't need any checks and any arguments, you can simply do void arch_change_pid(void) { S390_lowcore.current_pid = current->pid; if (test_facility(40)) lpp(&S390_lowcore.lpp); } Oleg.