Subject: CVE-2024-26884: bpf: Fix hashtab overflow check on 32-bit arches

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

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

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

bpf: Fix hashtab overflow check on 32-bit arches

The hashtab code relies on roundup_pow_of_two() to compute the number of
hash buckets, and contains an overflow check by checking if the
resulting value is 0. However, on 32-bit arches, the roundup code itself
can overflow by doing a 32-bit left-shift of an unsigned long value,
which is undefined behaviour, so it is not guaranteed to truncate
neatly. This was triggered by syzbot on the DEVMAP_HASH type, which
contains the same check, copied from the hashtab code. So apply the same
fix to hashtab, by moving the overflow check to before the roundup.

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

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

	Issue introduced in 3.19 with commit daaf427c6ab3 and fixed in 4.19.311 with commit 33ec04cadb77
	Issue introduced in 3.19 with commit daaf427c6ab3 and fixed in 5.4.273 with commit 92c81fbb3ed2
	Issue introduced in 3.19 with commit daaf427c6ab3 and fixed in 5.10.214 with commit 64f00b4df059
	Issue introduced in 3.19 with commit daaf427c6ab3 and fixed in 5.15.153 with commit 3b08cfc65f07
	Issue introduced in 3.19 with commit daaf427c6ab3 and fixed in 6.1.83 with commit a83fdaeaea36
	Issue introduced in 3.19 with commit daaf427c6ab3 and fixed in 6.6.23 with commit 8435f0961bf3
	Issue introduced in 3.19 with commit daaf427c6ab3 and fixed in 6.7.11 with commit d817f0d34d92
	Issue introduced in 3.19 with commit daaf427c6ab3 and fixed in 6.8.2 with commit a6fa75b5096c
	Issue introduced in 3.19 with commit daaf427c6ab3 and fixed in 6.9 with commit 6787d916c2cf

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-26884
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/bpf/hashtab.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/33ec04cadb77605b71d9298311919303d390c4d5
	https://git.kernel.org/stable/c/92c81fbb3ed2e0dfc33a4183a67135e1ab566ace
	https://git.kernel.org/stable/c/64f00b4df0597590b199b62a37a165473bf658a6
	https://git.kernel.org/stable/c/3b08cfc65f07b1132c1979d73f014ae6e04de55d
	https://git.kernel.org/stable/c/a83fdaeaea3677b83a53f72ace2d73a19bcd6d93
	https://git.kernel.org/stable/c/8435f0961bf3dc65e204094349bd9aeaac1f8868
	https://git.kernel.org/stable/c/d817f0d34d927f2deb17dadbfe212c9a6a32ac3e
	https://git.kernel.org/stable/c/a6fa75b5096c0f9826a4fabe22d907b0a5bb1016
	https://git.kernel.org/stable/c/6787d916c2cf9850c97a0a3f73e08c43e7d973b1