Subject: CVE-2024-43890: tracing: Fix overflow in get_free_elt()

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

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

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

tracing: Fix overflow in get_free_elt()

"tracing_map->next_elt" in get_free_elt() is at risk of overflowing.

Once it overflows, new elements can still be inserted into the tracing_map
even though the maximum number of elements (`max_elts`) has been reached.
Continuing to insert elements after the overflow could result in the
tracing_map containing "tracing_map->max_size" elements, leaving no empty
entries.
If any attempt is made to insert an element into a full tracing_map using
`__tracing_map_insert()`, it will cause an infinite loop with preemption
disabled, leading to a CPU hang problem.

Fix this by preventing any further increments to "tracing_map->next_elt"
once it reaches "tracing_map->max_elt".

The Linux kernel CVE team has assigned CVE-2024-43890 to this issue.

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

	Issue introduced in 4.7 with commit 08d43a5fa063 and fixed in 4.19.320 with commit 302ceb625d7b
	Issue introduced in 4.7 with commit 08d43a5fa063 and fixed in 5.4.282 with commit d3e4dbc2858f
	Issue introduced in 4.7 with commit 08d43a5fa063 and fixed in 5.10.224 with commit eb223bf01e68
	Issue introduced in 4.7 with commit 08d43a5fa063 and fixed in 5.15.165 with commit cd10d186a540
	Issue introduced in 4.7 with commit 08d43a5fa063 and fixed in 6.1.105 with commit 788ea62499b3
	Issue introduced in 4.7 with commit 08d43a5fa063 and fixed in 6.6.46 with commit a172c7b22bc2
	Issue introduced in 4.7 with commit 08d43a5fa063 and fixed in 6.10.5 with commit 236bb4690773
	Issue introduced in 4.7 with commit 08d43a5fa063 and fixed in 6.11 with commit bcf86c01ca46

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-2024-43890
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:
	kernel/trace/tracing_map.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/302ceb625d7b990db205a15e371f9a71238de91c
	https://git.kernel.org/stable/c/d3e4dbc2858fe85d1dbd2e72a9fc5dea988b5c18
	https://git.kernel.org/stable/c/eb223bf01e688dfe37e813c8988ee11c8c9f8d0a
	https://git.kernel.org/stable/c/cd10d186a5409a1fe6e976df82858e9773a698da
	https://git.kernel.org/stable/c/788ea62499b3c18541fd6d621964d8fafbc4aec5
	https://git.kernel.org/stable/c/a172c7b22bc2feaf489cfc6d6865f7237134fdf8
	https://git.kernel.org/stable/c/236bb4690773ab6869b40bedc7bc8d889e36f9d6
	https://git.kernel.org/stable/c/bcf86c01ca4676316557dd482c8416ece8c2e143