Subject: CVE-2024-40993: netfilter: ipset: Fix suspicious rcu_dereference_protected()

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

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

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

netfilter: ipset: Fix suspicious rcu_dereference_protected()

When destroying all sets, we are either in pernet exit phase or
are executing a "destroy all sets command" from userspace. The latter
was taken into account in ip_set_dereference() (nfnetlink mutex is held),
but the former was not. The patch adds the required check to
rcu_dereference_protected() in ip_set_dereference().

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

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

	Issue introduced in 6.1.95 with commit 390b353d1a1d and fixed in 6.1.96 with commit 788d585e62f4
	Issue introduced in 6.6.35 with commit 2ba35b37f780 and fixed in 6.6.36 with commit 94dd411c18d7
	Issue introduced in 6.9.6 with commit 90ae20d47de6 and fixed in 6.9.7 with commit 3fc09e1ca854

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-40993
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/netfilter/ipset/ip_set_core.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/3799d02ae4208af08e81310770d8754863a246a1
	https://git.kernel.org/stable/c/72d9611968867cc4c5509e7708b1507d692b797a
	https://git.kernel.org/stable/c/523bed6489e089dd8040e72453fb79da47b144c2
	https://git.kernel.org/stable/c/788d585e62f487bc4536d454937f737b70d39a33
	https://git.kernel.org/stable/c/94dd411c18d7fff9e411555d5c662d29416501e4
	https://git.kernel.org/stable/c/3fc09e1ca854bc234e007a56e0f7431f5e2defb5
	https://git.kernel.org/stable/c/8ecd06277a7664f4ef018abae3abd3451d64e7a6