mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
timekeeping: Check the return value of tk_get_aux_ts64 in __do_adjtimex()
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: 4eca49d0b6 ("timekeeping: Prepare do_adtimex() for auxiliary clocks")
Signed-off-by: Thomas Weißschuh (Schneider Electric) <thomas.weissschuh@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20260731-timekeeping-aux-adjtimex-return-v1-1-b7fea4692886@linutronix.de
This commit is contained in:
parent
d7fc133bf9
commit
4b61084b11
|
|
@ -3025,10 +3025,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));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user