Subject: CVE-2021-46993: sched: Fix out-of-bound access in uclamp

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

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

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

sched: Fix out-of-bound access in uclamp

Util-clamp places tasks in different buckets based on their clamp values
for performance reasons. However, the size of buckets is currently
computed using a rounding division, which can lead to an off-by-one
error in some configurations.

For instance, with 20 buckets, the bucket size will be 1024/20=51. A
task with a clamp of 1024 will be mapped to bucket id 1024/51=20. Sadly,
correct indexes are in range [0,19], hence leading to an out of bound
memory access.

Clamp the bucket id to fix the issue.

The Linux kernel CVE team has assigned CVE-2021-46993 to this issue.

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

	Issue introduced in 5.3 with commit 69842cba9ace and fixed in 5.4.120 with commit 687f523c134b
	Issue introduced in 5.3 with commit 69842cba9ace and fixed in 5.10.38 with commit f7347c85490b
	Issue introduced in 5.3 with commit 69842cba9ace and fixed in 5.11.22 with commit 3da3f804b82a
	Issue introduced in 5.3 with commit 69842cba9ace and fixed in 5.12.5 with commit 42ee47c7e356
	Issue introduced in 5.3 with commit 69842cba9ace and fixed in 5.13 with commit 6d2f8909a5fa

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-2021-46993
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/sched/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/687f523c134b7f0bd040ee1230f6d17990d54172
	https://git.kernel.org/stable/c/f7347c85490b92dd144fa1fba9e1eca501656ab3
	https://git.kernel.org/stable/c/3da3f804b82a0a382d523a21acf4cf3bb35f936d
	https://git.kernel.org/stable/c/42ee47c7e3569d9a0e2cb5053c496d97d380472f
	https://git.kernel.org/stable/c/6d2f8909a5fabb73fe2a63918117943986c39b6c