linux/kernel/time
Jinjie Ruan d8794ac20a posix-clock: Fix missing timespec64 check in pc_clock_settime()
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: 0606f422b4 ("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>
2024-10-14 17:22:43 -07:00
..
Kconfig
Makefile
alarmtimer.c treewide: Fix wrong singular form of jiffies in comments 2024-09-08 20:47:40 +02:00
clockevents.c treewide: Fix wrong singular form of jiffies in comments 2024-09-08 20:47:40 +02:00
clocksource-wdtest.c
clocksource.c clocksource: Set cs_watchdog_read() checks based on .uncertainty_margin 2024-08-02 18:37:13 +02:00
hrtimer.c In the v6.12 scheduler development cycle we had 63 commits from 18 contributors: 2024-09-19 15:55:58 +02:00
itimer.c
jiffies.c
namespace.c
ntp.c ntp: Make sure RTC is synchronized when time goes backwards 2024-09-10 13:50:40 +02:00
ntp_internal.h ntp: Make sure RTC is synchronized when time goes backwards 2024-09-10 13:50:40 +02:00
posix-clock.c posix-clock: Fix missing timespec64 check in pc_clock_settime() 2024-10-14 17:22:43 -07:00
posix-cpu-timers.c posix-timers: Consolidate signal queueing 2024-07-29 21:57:35 +02:00
posix-stubs.c
posix-timers.c treewide: Fix wrong singular form of jiffies in comments 2024-09-08 20:47:40 +02:00
posix-timers.h posix-timers: Consolidate signal queueing 2024-07-29 21:57:35 +02:00
sched_clock.c
test_udelay.c
tick-broadcast-hrtimer.c
tick-broadcast.c tick/broadcast: Move per CPU pointer access into the atomic section 2024-07-31 12:37:43 +02:00
tick-common.c
tick-internal.h
tick-legacy.c
tick-oneshot.c
tick-sched.c
tick-sched.h
time.c
time_test.c
timeconst.bc
timeconv.c
timecounter.c
timekeeping.c ntp: Make sure RTC is synchronized when time goes backwards 2024-09-10 13:50:40 +02:00
timekeeping.h
timekeeping_debug.c
timekeeping_internal.h
timer.c Updates for timers and timekeeping: 2024-09-17 07:25:37 +02:00
timer_list.c
timer_migration.c
timer_migration.h
vsyscall.c