kernel_samsung_a53x/kernel/time
Jinjie Ruan 211517137a posix-clock: Fix missing timespec64 check in pc_clock_settime()
commit d8794ac20a299b647ba9958f6d657051fc51a540 upstream.

As Andrew pointed out, it will make sense that the PTP core
checked timespec64 struct's tv_sec and tv_nsec range before calling
ptp->info->settime64().

As the man manual of clock_settime() said, if tp.tv_sec is negative or
tp.tv_nsec is outside the range [0..999,999,999], it should return EINVAL,
which include dynamic clocks which handles PTP clock, and the condition is
consistent with timespec64_valid(). As Thomas suggested, timespec64_valid()
only check the timespec is valid, but not ensure that the time is
in a valid range, so check it ahead using timespec64_valid_strict()
in pc_clock_settime() and return -EINVAL if not valid.

There are some drivers that use tp->tv_sec and tp->tv_nsec directly to
write registers without validity checks and assume that the higher layer
has checked it, which is dangerous and will benefit from this, such as
hclge_ptp_settime(), igb_ptp_settime_i210(), _rcar_gen4_ptp_settime(),
and some drivers can remove the checks of itself.

Cc: stable@vger.kernel.org
Fixes: 0606f422b453 ("posix clocks: Introduce dynamic clocks")
Acked-by: Richard Cochran <richardcochran@gmail.com>
Suggested-by: Andrew Lunn <andrew@lunn.ch>
Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Link: https://patch.msgid.link/20241009072302.1754567-2-ruanjinjie@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-23 23:21:54 +01:00
..
alarmtimer.c alarmtimer: Minimize wakeup time 2024-11-19 18:05:33 +01:00
clockevents.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clocksource.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hrtimer.c hrtimer: Prevent queuing of hrtimer without a function callback 2024-11-23 23:20:47 +01:00
itimer.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
jiffies.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
namespace.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ntp.c ntp: Safeguard against time_constant overflow 2024-11-23 23:20:28 +01:00
ntp_internal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
posix-clock.c posix-clock: Fix missing timespec64 check in pc_clock_settime() 2024-11-23 23:21:54 +01:00
posix-cpu-timers.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
posix-stubs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
posix-timers.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
posix-timers.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sched_clock.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
test_udelay.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tick-broadcast-hrtimer.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tick-broadcast.c tick/broadcast: Move per CPU pointer access into the atomic section 2024-11-23 23:20:28 +01:00
tick-common.c tick/nohz_full: Don't abuse smp_call_function_single() in tick_setup_device() 2024-11-19 14:19:05 +01:00
tick-internal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tick-oneshot.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tick-sched.c tick/sched: Preserve number of idle sleeps across CPU hotplug events 2024-11-18 12:13:07 +01:00
tick-sched.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
time.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timeconst.bc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timeconv.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timecounter.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timekeeping.c timekeeping: Fix cross-timestamp interpolation for non-x86 2024-11-19 08:44:37 +01:00
timekeeping.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timekeeping_debug.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timekeeping_internal.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timer.c timers: Rename del_timer_sync() to timer_delete_sync() 2024-11-19 09:22:14 +01:00
timer_list.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vsyscall.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00