Subject: CVE-2021-46940: tools/power turbostat: Fix offset overflow issue in index converting

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

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

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

tools/power turbostat: Fix offset overflow issue in index converting

The idx_to_offset() function returns type int (32-bit signed), but
MSR_PKG_ENERGY_STAT is u32 and would be interpreted as a negative number.
The end result is that it hits the if (offset < 0) check in update_msr_sum()
which prevents the timer callback from updating the stat in the background when
long durations are used. The similar issue exists in offset_to_idx() and
update_msr_sum(). Fix this issue by converting the 'int' to 'off_t' accordingly.

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

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

	Issue introduced in 5.10 with commit 9972d5d84d76 and fixed in 5.10.36 with commit ea6803ff2cd1
	Issue introduced in 5.10 with commit 9972d5d84d76 and fixed in 5.11.20 with commit dbdf22fc825f
	Issue introduced in 5.10 with commit 9972d5d84d76 and fixed in 5.12.3 with commit 337b1546cde8
	Issue introduced in 5.10 with commit 9972d5d84d76 and fixed in 5.13 with commit 13a779de4175

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-46940
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/power/x86/turbostat/turbostat.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/ea6803ff2cd1a2d7d880256bf562172b708a76ff
	https://git.kernel.org/stable/c/dbdf22fc825fdb1d97f23230064e0f9819471628
	https://git.kernel.org/stable/c/337b1546cde87fb8588ddaedf0201b769baa572a
	https://git.kernel.org/stable/c/13a779de4175df602366d129e41782ad7168cef0