On 05/11, Davidlohr Bueso wrote: > > Currently the tasklist_lock is shared mainly in order to observe > the list atomically for the PRIO_PGRP and PRIO_USER cases, as > the actual lookups are already rcu-safe,
not really... do_each_pid_task(PIDTYPE_PGID) can race with change_pid(PIDTYPE_PGID) which moves the task from one hlist to another. Yes, it is safe in that task_struct can't go away. But still this is not right because do_each_pid_task() can scan the wrong (2nd) hlist. > (ii) exit (deletion), this window is small but if a task is > deleted with the highest nice and it is not observed this would > cause a change in return semantics. To further reduce the window > we ignore any tasks that are PF_EXITING in the 'old' version of > the list. can't understand... could you explain in details why do you think this PF_EXITING check makes any sense? Oleg.