diff options
| -rw-r--r-- | kernel/time/itimer.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/time/itimer.c b/kernel/time/itimer.c index 9dd7ff5e445a..2ef98a02376a 100644 --- a/kernel/time/itimer.c +++ b/kernel/time/itimer.c @@ -152,8 +152,12 @@ static void set_cpu_itimer(struct task_struct *tsk, unsigned int clock_id,  	u64 oval, nval, ointerval, ninterval;  	struct cpu_itimer *it = &tsk->signal->it[clock_id]; -	nval = timeval_to_ns(&value->it_value); -	ninterval = timeval_to_ns(&value->it_interval); +	/* +	 * Use the to_ktime conversion because that clamps the maximum +	 * value to KTIME_MAX and avoid multiplication overflows. +	 */ +	nval = ktime_to_ns(timeval_to_ktime(value->it_value)); +	ninterval = ktime_to_ns(timeval_to_ktime(value->it_interval));  	spin_lock_irq(&tsk->sighand->siglock);  | 
