]> Pileus Git - ~andy/linux/commitdiff
time: Catch invalid timespec sleep values in __timekeeping_inject_sleeptime
authorJohn Stultz <john.stultz@linaro.org>
Thu, 2 Jun 2011 01:18:09 +0000 (18:18 -0700)
committerJohn Stultz <john.stultz@linaro.org>
Tue, 21 Jun 2011 23:55:36 +0000 (16:55 -0700)
Arve suggested making sure we catch possible negative sleep time
intervals that could be passed into timekeeping_inject_sleeptime.

CC: Arve Hjønnevåg <arve@android.com>
CC: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: John Stultz <john.stultz@linaro.org>
kernel/time/timekeeping.c

index 342408cf68dd4dc6240758c6d74f22d229a6186b..9d09777a213fdf373baa5911a9ce74b24a2253cb 100644 (file)
@@ -604,6 +604,12 @@ static struct timespec timekeeping_suspend_time;
  */
 static void __timekeeping_inject_sleeptime(struct timespec *delta)
 {
+       if (!timespec_valid(delta)) {
+               printk(KERN_WARN "__timekeeping_inject_sleeptime: Invalid "
+                                       "sleep delta value!\n");
+               return;
+       }
+
        xtime = timespec_add(xtime, *delta);
        wall_to_monotonic = timespec_sub(wall_to_monotonic, *delta);
        total_sleep_time = timespec_add(total_sleep_time, *delta);