Subject: CVE-2022-49030: libbpf: Handle size overflow for ringbuf mmap

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

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

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

libbpf: Handle size overflow for ringbuf mmap

The maximum size of ringbuf is 2GB on x86-64 host, so 2 * max_entries
will overflow u32 when mapping producer page and data pages. Only
casting max_entries to size_t is not enough, because for 32-bits
application on 64-bits kernel the size of read-only mmap region
also could overflow size_t.

So fixing it by casting the size of read-only mmap region into a __u64
and checking whether or not there will be overflow during mmap.

The Linux kernel CVE team has assigned CVE-2022-49030 to this issue.

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

	Issue introduced in 5.8 with commit bf99c936f947 and fixed in 5.10.158 with commit 8a549ab67245
	Issue introduced in 5.8 with commit bf99c936f947 and fixed in 5.15.82 with commit 0140e079a420
	Issue introduced in 5.8 with commit bf99c936f947 and fixed in 6.0.12 with commit 535a25ab4f9a
	Issue introduced in 5.8 with commit bf99c936f947 and fixed in 6.1 with commit 927cbb478adf

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-2022-49030
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:
	tools/lib/bpf/ringbuf.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/8a549ab6724520aa3c07f47e0eba820293551490
	https://git.kernel.org/stable/c/0140e079a42064680394fff1199a7b5483688dec
	https://git.kernel.org/stable/c/535a25ab4f9a45f74ba38ab71de95e97474922ed
	https://git.kernel.org/stable/c/927cbb478adf917e0a142b94baa37f06279cc466