[PATCH] timekeeping: Check the return value of tk_get_aux_ts64 in __do_adjtimex()
From: Thomas Weißschuh (Schneider Electric)
Date: Fri Jul 31 2026 - 10:24:20 EST
If the auxiliary clock is disabled during tk_get_aux_ts64() but is
enabled before tks->clock_valid is checked, then uninitialized stackdata
will be used in the calculations and indirectly leaked to userspace.
The same race window also exists after this change and also for the
core timekeeper. But in these cases the only effect would be incorrect
adjustments and this is userspace's responsibility to avoid this.
Fixes: 4eca49d0b621 ("timekeeping: Prepare do_adtimex() for auxiliary clocks")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Thomas Weißschuh (Schneider Electric) <thomas.weissschuh@xxxxxxxxxxxxx>
---
kernel/time/timekeeping.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 97db2e9393f9..15ac0c3df3b5 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -3021,10 +3021,12 @@ static int __do_adjtimex(struct tk_data *tkd, struct __kernel_timex *txc,
return ret;
add_device_randomness(txc, sizeof(*txc));
- if (!aux_clock)
+ if (!aux_clock) {
ktime_get_real_ts64(&ts);
- else
- tk_get_aux_ts64(tkd->timekeeper.id, &ts);
+ } else {
+ if (!tk_get_aux_ts64(tkd->timekeeper.id, &ts))
+ return -ENODEV;
+ }
add_device_randomness(&ts, sizeof(ts));
---
base-commit: ecc330e3096173f433659aa64ab3674d0d48440e
change-id: 20260730-timekeeping-aux-adjtimex-return-8b05aa696f2f
Best regards,
--
Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx>