If the PID encoded into the clock id is 0 then the target is either the calling thread itself or the process to which it belongs.
If the current thread encodes its own PID on a process wide clock then there is no reason not to treat it in the same way as the PID=0 case. Signed-off-by: Thomas Gleixner <t...@linutronix.de> --- kernel/time/posix-cpu-timers.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) --- a/kernel/time/posix-cpu-timers.c +++ b/kernel/time/posix-cpu-timers.c @@ -90,7 +90,14 @@ static struct task_struct *lookup_task(c } else { /* - * For processes require that p is group leader. + * Timer is going to be attached to a process. If p is + * current then treat it like the PID=0 case above. + */ + if (p == current) + return current->group_leader; + + /* + * For foreign processes require that p is group leader. */ if (!has_group_leader_pid(p)) return NULL;