Subject: CVE-2024-38569: drivers/perf: hisi_pcie: Fix out-of-bound access when valid event group

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

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

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

drivers/perf: hisi_pcie: Fix out-of-bound access when valid event group

The perf tool allows users to create event groups through following
cmd [1], but the driver does not check whether the array index is out of
bounds when writing data to the event_group array. If the number of events
in an event_group is greater than HISI_PCIE_MAX_COUNTERS, the memory write
overflow of event_group array occurs.

Add array index check to fix the possible array out of bounds violation,
and return directly when write new events are written to array bounds.

There are 9 different events in an event_group.
[1] perf stat -e '{pmu/event1/, ... ,pmu/event9/}'

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

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

	Issue introduced in 5.17 with commit 8404b0fbc7fb and fixed in 6.1.93 with commit 3d1face00ebb
	Issue introduced in 5.17 with commit 8404b0fbc7fb and fixed in 6.6.33 with commit 8e9aab249217
	Issue introduced in 5.17 with commit 8404b0fbc7fb and fixed in 6.8.12 with commit 567d34626c22
	Issue introduced in 5.17 with commit 8404b0fbc7fb and fixed in 6.9.3 with commit ff48247144d1
	Issue introduced in 5.17 with commit 8404b0fbc7fb and fixed in 6.10 with commit 77fce82678ea

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-38569
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:
	drivers/perf/hisilicon/hisi_pcie_pmu.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/3d1face00ebb7996842aee4214d7d0fb0c77b1e9
	https://git.kernel.org/stable/c/8e9aab2492178f25372f1820bfd9289fbd74efd0
	https://git.kernel.org/stable/c/567d34626c22b36579ec0abfdf5eda2949044220
	https://git.kernel.org/stable/c/ff48247144d13a3a0817127703724256008efa78
	https://git.kernel.org/stable/c/77fce82678ea5fd51442e62febec2004f79e041b