WSL2-Linux-Kernel/arch/um/kernel
Johannes Berg 0c7478a2da um: time-travel: fix time corruption
[ Upstream commit abe4eaa8618bb36c2b33e9cdde0499296a23448c ]

In 'basic' time-travel mode (without =inf-cpu or =ext), we
still get timer interrupts. These can happen at arbitrary
points in time, i.e. while in timer_read(), which pushes
time forward just a little bit. Then, if we happen to get
the interrupt after calculating the new time to push to,
but before actually finishing that, the interrupt will set
the time to a value that's incompatible with the forward,
and we'll crash because time goes backwards when we do the
forwarding.

Fix this by reading the time_travel_time, calculating the
adjustment, and doing the adjustment all with interrupts
disabled.

Reported-by: Vincent Whitchurch <Vincent.Whitchurch@axis.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-02-23 08:54:50 +01:00
..
skas
Makefile
asm-offsets.c
config.c.in
dyn.lds.S
early_printk.c
exec.c
exitcode.c
gprof_syms.c
initrd.c
ioport.c
irq.c
kmsg_dump.c
ksyms.c
maccess.c
mem.c
physmem.c
process.c
ptrace.c
reboot.c
sigio.c
signal.c
stacktrace.c
syscall.c
sysrq.c
time.c
tlb.c
trap.c
um_arch.c
umid.c
uml.lds.S
vmlinux.lds.S