posix-timers: Noralize good_sigevent
In good_sigevent directly compute the default return value as "task_tgid(current)". This is exactly the same as "task_pid(current->group_leader)" but written more clearly. In the thread case first compute the thread's pid. Then veify that attached to that pid is a thread of the current thread group. This has the net effect of making the code a little clearer, and making it obvious that posix timers never look up a process by a the pid of a thread. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
019191342f
commit
2118e1f53f
|
@ -433,11 +433,13 @@ static enum hrtimer_restart posix_timer_fn(struct hrtimer *timer)
|
|||
|
||||
static struct pid *good_sigevent(sigevent_t * event)
|
||||
{
|
||||
struct task_struct *rtn = current->group_leader;
|
||||
struct pid *pid = task_tgid(current);
|
||||
struct task_struct *rtn;
|
||||
|
||||
switch (event->sigev_notify) {
|
||||
case SIGEV_SIGNAL | SIGEV_THREAD_ID:
|
||||
rtn = find_task_by_vpid(event->sigev_notify_thread_id);
|
||||
pid = find_vpid(event->sigev_notify_thread_id);
|
||||
rtn = pid_task(pid, PIDTYPE_PID);
|
||||
if (!rtn || !same_thread_group(rtn, current))
|
||||
return NULL;
|
||||
/* FALLTHRU */
|
||||
|
@ -447,7 +449,7 @@ static struct pid *good_sigevent(sigevent_t * event)
|
|||
return NULL;
|
||||
/* FALLTHRU */
|
||||
case SIGEV_NONE:
|
||||
return task_pid(rtn);
|
||||
return pid;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue