2008-11-24 14:46:40

by Petr Tesařík

[permalink] [raw]
Subject: Fix clock_gettime with CLOCK_PROCESS_CPUTIME_ID

Since CLOCK_PROCESS_CPUTIME_ID is in fact translated to -6, the switch
statement in cpu_clock_sample_group() must first mask off the irrelevant
bits, similar to cpu_clock_sample().

Signed-off-by: Petr Tesarik <[email protected]>

--
posix-cpu-timers.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
--- a/kernel/posix-cpu-timers.c
+++ b/kernel/posix-cpu-timers.c
@@ -311,7 +311,7 @@ static int cpu_clock_sample_group(const clockid_t which_clock,
struct task_cputime cputime;

thread_group_cputime(p, &cputime);
- switch (which_clock) {
+ switch (CPUCLOCK_WHICH(which_clock)) {
default:
return -EINVAL;
case CPUCLOCK_PROF:


2008-11-24 15:34:00

by Thomas Gleixner

[permalink] [raw]
Subject: Re: Fix clock_gettime with CLOCK_PROCESS_CPUTIME_ID

On Mon, 24 Nov 2008, Petr Tesarik wrote:

> Since CLOCK_PROCESS_CPUTIME_ID is in fact translated to -6, the switch
> statement in cpu_clock_sample_group() must first mask off the irrelevant
> bits, similar to cpu_clock_sample().
>
> Signed-off-by: Petr Tesarik <[email protected]>

Good catch. Applied.

Thanks,

tglx

> --
> posix-cpu-timers.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
> --- a/kernel/posix-cpu-timers.c
> +++ b/kernel/posix-cpu-timers.c
> @@ -311,7 +311,7 @@ static int cpu_clock_sample_group(const clockid_t which_clock,
> struct task_cputime cputime;
>
> thread_group_cputime(p, &cputime);
> - switch (which_clock) {
> + switch (CPUCLOCK_WHICH(which_clock)) {
> default:
> return -EINVAL;
> case CPUCLOCK_PROF:
>
>