Re: [PATCH backport] ntp: Remove invalid cast in time offset math

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Dec 06, 2024 at 09:44:56PM +0100, Thomas Gleixner wrote:
> 
> From: Marcelo Dalmas <marcelo.dalmas@xxxxxx>
> 
> commit f5807b0606da7ac7c1b74a386b22134ec7702d05 upstream.
> 
> Due to an unsigned cast, adjtimex() returns the wrong offest when using
> ADJ_MICRO and the offset is negative. In this case a small negative offset
> returns approximately 4.29 seconds (~ 2^32/1000 milliseconds) due to the
> unsigned cast of the negative offset.
> 
> This cast was added when the kernel internal struct timex was changed to
> use type long long for the time offset value to address the problem of a
> 64bit/32bit division on 32bit systems.
> 
> The correct cast would have been (s32), which is correct as time_offset can
> only be in the range of [INT_MIN..INT_MAX] because the shift constant used
> for calculating it is 32. But that's non-obvious.
> 
> Remove the cast and use div_s64() to cure the issue.
> 
> [ tglx: Fix white space damage, use div_s64() and amend the change log ]
> [ tglx: Backport for 6.12.y and older ]
> 
> Fixes: ead25417f82e ("timex: use __kernel_timex internally")
> Signed-off-by: Marcelo Dalmas <marcelo.dalmas@xxxxxx>
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> Link: https://lore.kernel.org/all/SJ0P101MB03687BF7D5A10FD3C49C51E5F42E2@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> ---
>  kernel/time/ntp.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Now applied, thanks.

greg k-h




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux