Subject: CVE-2024-27395: net: openvswitch: Fix Use-After-Free in ovs_ct_exit

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

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

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

net: openvswitch: Fix Use-After-Free in ovs_ct_exit

Since kfree_rcu, which is called in the hlist_for_each_entry_rcu traversal
of ovs_ct_limit_exit, is not part of the RCU read critical section, it
is possible that the RCU grace period will pass during the traversal and
the key will be free.

To prevent this, it should be changed to hlist_for_each_entry_safe.

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

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

	Issue introduced in 4.18 with commit 11efd5cb04a1 and fixed in 4.19.313 with commit 2db9a8c0a01f
	Issue introduced in 4.18 with commit 11efd5cb04a1 and fixed in 5.4.275 with commit 589523cf0b38
	Issue introduced in 4.18 with commit 11efd5cb04a1 and fixed in 5.10.216 with commit 35880c3fa6f8
	Issue introduced in 4.18 with commit 11efd5cb04a1 and fixed in 5.15.158 with commit 9048616553c6
	Issue introduced in 4.18 with commit 11efd5cb04a1 and fixed in 6.1.90 with commit bca6fa2d9a9f
	Issue introduced in 4.18 with commit 11efd5cb04a1 and fixed in 6.6.30 with commit eaa5e164a211
	Issue introduced in 4.18 with commit 11efd5cb04a1 and fixed in 6.8.9 with commit edee0758747d
	Issue introduced in 4.18 with commit 11efd5cb04a1 and fixed in 6.9 with commit 5ea7b72d4fac

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-27395
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:
	net/openvswitch/conntrack.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/2db9a8c0a01fa1c762c1e61a13c212c492752994
	https://git.kernel.org/stable/c/589523cf0b384164e445dd5db8d5b1bf97982424
	https://git.kernel.org/stable/c/35880c3fa6f8fe281a19975d2992644588ca33d3
	https://git.kernel.org/stable/c/9048616553c65e750d43846f225843ed745ec0d4
	https://git.kernel.org/stable/c/bca6fa2d9a9f560e6b89fd5190b05cc2f5d422c1
	https://git.kernel.org/stable/c/eaa5e164a2110d2fb9e16c8a29e4501882235137
	https://git.kernel.org/stable/c/edee0758747d7c219e29db9ed1d4eb33e8d32865
	https://git.kernel.org/stable/c/5ea7b72d4fac2fdbc0425cd8f2ea33abe95235b2