[PATCH v2 1/2] arm64: vdso: fix coarse clock handling

Catalin Marinas catalin.marinas at arm.com
Wed Feb 5 06:54:57 EST 2014


On Wed, Feb 05, 2014 at 10:09:45AM +0000, Will Deacon wrote:
> On Wed, Feb 05, 2014 at 05:53:04AM +0000, Nathan Lynch wrote:
> > When __kernel_clock_gettime is called with a CLOCK_MONOTONIC_COARSE or
> > CLOCK_REALTIME_COARSE clock id, it returns incorrectly to whatever the
> > caller has placed in x2 ("ret x2" to return from the fast path).  Fix
> > this by saving x30/LR to x2 only in code that will call
> > __do_get_tspec, restoring x30 afterward, and using a plain "ret" to
> > return from the routine.
> > 
> > Also: while the resulting tv_nsec value for CLOCK_REALTIME and
> > CLOCK_MONOTONIC must be computed using intermediate values that are
> > left-shifted by cs_shift (x12, set by __do_get_tspec), the results for
> > coarse clocks should be calculated using unshifted values
> > (xtime_coarse_nsec is in units of actual nanoseconds).  The current
> > code shifts intermediate values by x12 unconditionally, but x12 is
> > uninitialized when servicing a coarse clock.  Fix this by setting x12
> > to 0 once we know we are dealing with a coarse clock id.
> > 
> > Signed-off-by: Nathan Lynch <nathan_lynch at mentor.com>
> > ---
> 
> Thanks for the quick update Nathan!
> 
>   Acked-by: Will Deacon <will.deacon at arm.com>
> 
> Catalin: both of these are candidates for stable.

And by this you mean Cc: stable...

Applied, thanks.

-- 
Catalin



More information about the linux-arm-kernel mailing list