Re: [PATCH] time: Improve sanity checking of timekeeping inputs

From: Josh Boyer
Date: Wed Aug 15 2012 - 07:39:47 EST


On Wed, Aug 8, 2012 at 3:36 PM, John Stultz <john.stultz@xxxxxxxxxx> wrote:
> Thomas, Ingo,
> Here's a fix against tip/timers/urgent that addresses
> timekeeping edge cases detected by both a bad BIOS and system
> fuzzing w/ trinity. Thanks to Sasha Levin and CAI Qian for
> finding and reporting these!
>
> Let me know if you have any tweaks you want to see.
>
> thanks
> -john
>
> Unexpected behavior could occur if the time is set to
> a value large enough to overflow a 64bit ktime_t
> (which is something larger then the year 2262).
>
> Also unexpected behavior could occur if large negative
> offsets are injected via adjtimex.
>
> So this patch improves the sanity check timekeeping inputs
> by improving the timespec_valid() check, and then makes better
> use of timespec_valid() to make sure we don't set the time to
> an invalid negative value or one that overflows ktime_t.
>
> Note: This does not protect from setting the time close to
> overflowing ktime_t and then letting natural accumulation
> cause the overflow.
>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
> Cc: Prarit Bhargava <prarit@xxxxxxxxxx>
> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Zhouping Liu <zliu@xxxxxxxxxx>
> Cc: CAI Qian <caiqian@xxxxxxxxxx>
> Cc: Sasha Levin <levinsasha928@xxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> Reported-by: CAI Qian <caiqian@xxxxxxxxxx>
> Reported-by: Sasha Levin <levinsasha928@xxxxxxxxx>
> Signed-off-by: John Stultz <john.stultz@xxxxxxxxxx>
> ---
> include/linux/ktime.h | 7 -------
> include/linux/time.h | 22 ++++++++++++++++++++--
> kernel/time/timekeeping.c | 26 ++++++++++++++++++++++++--
> 3 files changed, 44 insertions(+), 11 deletions(-)

This patch fixes a boot regression on machines with crappy BIOS. Is
this going to get committed soon?

https://bugzilla.redhat.com/show_bug.cgi?id=844249

josh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/