diff options
Diffstat (limited to 'kernel/time')
| -rw-r--r-- | kernel/time/posix-timers.c | 24 | 
1 files changed, 12 insertions, 12 deletions
diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c index 8955f32f2a36..8f7f1dd95940 100644 --- a/kernel/time/posix-timers.c +++ b/kernel/time/posix-timers.c @@ -1047,22 +1047,28 @@ SYSCALL_DEFINE2(clock_gettime, const clockid_t, which_clock,  	return error;  } -SYSCALL_DEFINE2(clock_adjtime, const clockid_t, which_clock, -		struct timex __user *, utx) +int do_clock_adjtime(const clockid_t which_clock, struct timex * ktx)  {  	const struct k_clock *kc = clockid_to_kclock(which_clock); -	struct timex ktx; -	int err;  	if (!kc)  		return -EINVAL;  	if (!kc->clock_adj)  		return -EOPNOTSUPP; +	return kc->clock_adj(which_clock, ktx); +} + +SYSCALL_DEFINE2(clock_adjtime, const clockid_t, which_clock, +		struct timex __user *, utx) +{ +	struct timex ktx; +	int err; +  	if (copy_from_user(&ktx, utx, sizeof(ktx)))  		return -EFAULT; -	err = kc->clock_adj(which_clock, &ktx); +	err = do_clock_adjtime(which_clock, &ktx);  	if (err >= 0 && copy_to_user(utx, &ktx, sizeof(ktx)))  		return -EFAULT; @@ -1126,20 +1132,14 @@ COMPAT_SYSCALL_DEFINE2(clock_gettime, clockid_t, which_clock,  COMPAT_SYSCALL_DEFINE2(clock_adjtime, clockid_t, which_clock,  		       struct old_timex32 __user *, utp)  { -	const struct k_clock *kc = clockid_to_kclock(which_clock);  	struct timex ktx;  	int err; -	if (!kc) -		return -EINVAL; -	if (!kc->clock_adj) -		return -EOPNOTSUPP; -  	err = get_old_timex32(&ktx, utp);  	if (err)  		return err; -	err = kc->clock_adj(which_clock, &ktx); +	err = do_clock_adjtime(which_clock, &ktx);  	if (err >= 0)  		err = put_old_timex32(utp, &ktx);  | 
