Subject: CVE-2023-52633: um: time-travel: fix time corruption

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

um: time-travel: fix time corruption

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.

The Linux kernel CVE team has assigned CVE-2023-52633 to this issue.

Affected and fixed versions
===========================

	Fixed in 5.15.149 with commit 0c7478a2da3f
	Fixed in 6.1.77 with commit 4f7dad73df4c
	Fixed in 6.6.16 with commit de3e9d8e8d1a
	Fixed in 6.7.4 with commit b427f55e9d41
	Fixed in 6.8 with commit abe4eaa8618b

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2023-52633
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	arch/um/kernel/time.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/0c7478a2da3f5fe106b4658338873d50c86ac7ab
	https://git.kernel.org/stable/c/4f7dad73df4cdb2b7042103d3922745d040ad025
	https://git.kernel.org/stable/c/de3e9d8e8d1ae0a4d301109d1ec140796901306c
	https://git.kernel.org/stable/c/b427f55e9d4185f6f17cc1e3296eb8d0c4425283
	https://git.kernel.org/stable/c/abe4eaa8618bb36c2b33e9cdde0499296a23448c