posix-timers: Zero settings value in common code
authorThomas Gleixner <tglx@linutronix.de>
Tue, 30 May 2017 21:15:51 +0000 (23:15 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Sun, 4 Jun 2017 13:40:28 +0000 (15:40 +0200)
Zero out the settings struct in the common code so the callbacks do not
have to do it themself.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: John Stultz <john.stultz@linaro.org>
Link: http://lkml.kernel.org/r/20170530211657.200870713@linutronix.de
kernel/time/posix-cpu-timers.c
kernel/time/posix-timers.c

index 96c833a61adefef362b8e9dd5c5b764e5880e05d..cb4a4eb44279be6837e21f41d19ccb52040c80b4 100644 (file)
@@ -719,10 +719,8 @@ static void posix_cpu_timer_get(struct k_itimer *timer, struct itimerspec64 *itp
         */
        itp->it_interval = ns_to_timespec64(timer->it.cpu.incr);
 
-       if (timer->it.cpu.expires == 0) {       /* Timer not armed at all.  */
-               itp->it_value.tv_sec = itp->it_value.tv_nsec = 0;
+       if (!timer->it.cpu.expires)
                return;
-       }
 
        /*
         * Sample the clock to take the difference with the expiry time.
@@ -746,7 +744,6 @@ static void posix_cpu_timer_get(struct k_itimer *timer, struct itimerspec64 *itp
                         * Call the timer disarmed, nothing else to do.
                         */
                        timer->it.cpu.expires = 0;
-                       itp->it_value = ns_to_timespec64(timer->it.cpu.expires);
                        return;
                } else {
                        cpu_timer_sample_group(timer->it_clock, p, &now);
index 48f6c37ae5dfc08b14aeeb92bf6b29a0afabf364..0332f7a60fd6de3eef482f14d49ec59d525b8ac8 100644 (file)
@@ -645,8 +645,6 @@ common_timer_get(struct k_itimer *timr, struct itimerspec64 *cur_setting)
        struct timespec64 ts64;
        bool sig_none;
 
-       memset(cur_setting, 0, sizeof(*cur_setting));
-
        sig_none = (timr->it_sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_NONE;
        iv = timr->it_interval;
 
@@ -705,6 +703,7 @@ SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id,
        if (!timr)
                return -EINVAL;
 
+       memset(&cur_setting64, 0, sizeof(cur_setting64));
        kc = timr->kclock;
        if (WARN_ON_ONCE(!kc || !kc->timer_get))
                ret = -EINVAL;