summaryrefslogtreecommitdiffstats
path: root/kernel/time/posix-cpu-timers.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/time/posix-cpu-timers.c')
-rw-r--r--kernel/time/posix-cpu-timers.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c
index 2fd3b3fa68bf..b7f972fb115e 100644
--- a/kernel/time/posix-cpu-timers.c
+++ b/kernel/time/posix-cpu-timers.c
@@ -66,23 +66,18 @@ static struct task_struct *lookup_task(const pid_t pid, bool thread,
if (thread)
return same_thread_group(p, current) ? p : NULL;
- if (gettime) {
- /*
- * For clock_gettime(PROCESS) the task does not need to be
- * the actual group leader. tsk->sighand gives
- * access to the group's clock.
- *
- * Timers need the group leader because they take a
- * reference on it and store the task pointer until the
- * timer is destroyed.
- */
- return (p == current || thread_group_leader(p)) ? p : NULL;
- }
+ /*
+ * For clock_gettime(PROCESS) the task does not need to be
+ * the actual group leader. task->signal gives
+ * access to the group's clock.
+ */
+ if (gettime && (p == current))
+ return p;
/*
* For processes require that p is group leader.
*/
- return has_group_leader_pid(p) ? p : NULL;
+ return thread_group_leader(p) ? p : NULL;
}
static struct task_struct *__get_task_for_clock(const clockid_t clock,