aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2017-06-12 19:44:09 +0200
committerThomas Gleixner <tglx@linutronix.de>2017-06-12 21:07:40 +0200
commit5c7a3a3d20a4e175304c0e23809e3d70be8fed8a (patch)
tree1787d47a161f70947dd6865ae4527054f46895bc /kernel/time
parentposix-timers: Fix inverted SIGEV_NONE logic in common_timer_get() (diff)
downloadlinux-dev-5c7a3a3d20a4e175304c0e23809e3d70be8fed8a.tar.xz
linux-dev-5c7a3a3d20a4e175304c0e23809e3d70be8fed8a.zip
posix-timers: Zero out oldval itimerspec
The recent posix timer rework moved the clearing of the itimerspec to the real syscall implementation, but forgot that the kclock->timer_get() is used by timer_settime() as well. That results in an uninitialized variable and bogus values returned to user space. Add the missing memset to timer_settime(). Fixes: eabdec043853 ("posix-timers: Zero settings value in common code") Reported-by: Andrei Vagin <avagin@virtuozzo.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: John Stultz <john.stultz@linaro.org> Cc: Cyrill Gorcunov <gorcunov@openvz.org> Link: http://lkml.kernel.org/r/20170609201156.GB21491@outlook.office365.com
Diffstat (limited to 'kernel/time')
-rw-r--r--kernel/time/posix-timers.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c
index b53a0b562516..88517dcfe0ca 100644
--- a/kernel/time/posix-timers.c
+++ b/kernel/time/posix-timers.c
@@ -828,6 +828,8 @@ SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags,
if (!timespec64_valid(&new_spec64.it_interval) ||
!timespec64_valid(&new_spec64.it_value))
return -EINVAL;
+ if (rtn)
+ memset(rtn, 0, sizeof(*rtn));
retry:
timr = lock_timer(timer_id, &flag);
if (!timr)