Subject: CVE-2022-49032: iio: health: afe4404: Fix oob read in afe4404_[read|write]_raw

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

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

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

iio: health: afe4404: Fix oob read in afe4404_[read|write]_raw

KASAN report out-of-bounds read as follows:

BUG: KASAN: global-out-of-bounds in afe4404_read_raw+0x2ce/0x380
Read of size 4 at addr ffffffffc00e4658 by task cat/278

Call Trace:
 afe4404_read_raw
 iio_read_channel_info
 dev_attr_show

The buggy address belongs to the variable:
 afe4404_channel_leds+0x18/0xffffffffffffe9c0

This issue can be reproduce by singe command:

 $ cat /sys/bus/i2c/devices/0-0058/iio\:device0/in_intensity6_raw

The array size of afe4404_channel_leds and afe4404_channel_offdacs
are less than channels, so access with chan->address cause OOB read
in afe4404_[read|write]_raw. Fix it by moving access before use them.

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

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

	Issue introduced in 4.8 with commit b36e8257641a and fixed in 4.9.335 with commit 68de7da092f3
	Issue introduced in 4.8 with commit b36e8257641a and fixed in 4.14.301 with commit 113c08030a89
	Issue introduced in 4.8 with commit b36e8257641a and fixed in 4.19.268 with commit f5575041ec15
	Issue introduced in 4.8 with commit b36e8257641a and fixed in 5.4.226 with commit 3f566b626029
	Issue introduced in 4.8 with commit b36e8257641a and fixed in 5.10.158 with commit 5eb114f55b37
	Issue introduced in 4.8 with commit b36e8257641a and fixed in 5.15.82 with commit f7419fc42afc
	Issue introduced in 4.8 with commit b36e8257641a and fixed in 6.0.12 with commit d45d9f45e7b1
	Issue introduced in 4.8 with commit b36e8257641a and fixed in 6.1 with commit fc92d9e3de0b

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-49032
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/iio/health/afe4404.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/68de7da092f38395dde523f2e5db26eba6c23e28
	https://git.kernel.org/stable/c/113c08030a89aaf406f8a1d4549d758a67c2afba
	https://git.kernel.org/stable/c/f5575041ec15310bdc50c42b8b22118cc900226e
	https://git.kernel.org/stable/c/3f566b626029ca8598d48e5074e56bb37399ca1b
	https://git.kernel.org/stable/c/5eb114f55b37dbc0487aa9c1913b81bb7837f1c4
	https://git.kernel.org/stable/c/f7419fc42afc035f6b29ce713e17dcd2000c833f
	https://git.kernel.org/stable/c/d45d9f45e7b1365fd0d9bf14680d6d5082a590d1
	https://git.kernel.org/stable/c/fc92d9e3de0b2d30a3ccc08048a5fad533e4672b