Subject: CVE-2024-38568: drivers/perf: hisi: hns3: 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: hns3: 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 HNS3_PMU_MAX_HW_EVENTS, 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-38568 to this issue.

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

	Issue introduced in 6.0 with commit 66637ab137b4 and fixed in 6.1.93 with commit 3669baf30830
	Issue introduced in 6.0 with commit 66637ab137b4 and fixed in 6.6.33 with commit be1fa711e59c
	Issue introduced in 6.0 with commit 66637ab137b4 and fixed in 6.8.12 with commit b5120d322763
	Issue introduced in 6.0 with commit 66637ab137b4 and fixed in 6.9.3 with commit aa2d3d678895
	Issue introduced in 6.0 with commit 66637ab137b4 and fixed in 6.10 with commit 81bdd60a3d1d

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-38568
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/hns3_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/3669baf308308385a2ab391324abdde5682af5aa
	https://git.kernel.org/stable/c/be1fa711e59c874d049f592aef1d4685bdd22bdf
	https://git.kernel.org/stable/c/b5120d322763c15c978bc47beb3b6dff45624304
	https://git.kernel.org/stable/c/aa2d3d678895c8eedd003f1473f87d3f06fe6ec7
	https://git.kernel.org/stable/c/81bdd60a3d1d3b05e6cc6674845afb1694dd3a0e