diff options
Diffstat (limited to 'kernel/posix-cpu-timers.c')
| -rw-r--r-- | kernel/posix-cpu-timers.c | 12 | 
1 files changed, 6 insertions, 6 deletions
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index b53c8fcd9d8..68c96376e84 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c @@ -21,8 +21,8 @@ static int check_clock(const clockid_t which_clock)  	read_lock(&tasklist_lock);  	p = find_task_by_pid(pid); -	if (!p || (CPUCLOCK_PERTHREAD(which_clock) ? -		   p->tgid != current->tgid : p->tgid != pid)) { +	if (!p || !(CPUCLOCK_PERTHREAD(which_clock) ? +		   same_thread_group(p, current) : thread_group_leader(p))) {  		error = -EINVAL;  	}  	read_unlock(&tasklist_lock); @@ -308,13 +308,13 @@ int posix_cpu_clock_get(const clockid_t which_clock, struct timespec *tp)  		p = find_task_by_pid(pid);  		if (p) {  			if (CPUCLOCK_PERTHREAD(which_clock)) { -				if (p->tgid == current->tgid) { +				if (same_thread_group(p, current)) {  					error = cpu_clock_sample(which_clock,  								 p, &rtn);  				}  			} else {  				read_lock(&tasklist_lock); -				if (p->tgid == pid && p->signal) { +				if (thread_group_leader(p) && p->signal) {  					error =  					    cpu_clock_sample_group(which_clock,  							           p, &rtn); @@ -355,7 +355,7 @@ int posix_cpu_timer_create(struct k_itimer *new_timer)  			p = current;  		} else {  			p = find_task_by_pid(pid); -			if (p && p->tgid != current->tgid) +			if (p && !same_thread_group(p, current))  				p = NULL;  		}  	} else { @@ -363,7 +363,7 @@ int posix_cpu_timer_create(struct k_itimer *new_timer)  			p = current->group_leader;  		} else {  			p = find_task_by_pid(pid); -			if (p && p->tgid != pid) +			if (p && !thread_group_leader(p))  				p = NULL;  		}  	}  |