Subject: CVE-2024-43825: iio: Fix the sorting functionality in iio_gts_build_avail_time_table

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

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

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

iio: Fix the sorting functionality in iio_gts_build_avail_time_table

The sorting in iio_gts_build_avail_time_table is not working as intended.
It could result in an out-of-bounds access when the time is zero.

Here are more details:

1. When the gts->itime_table[i].time_us is zero, e.g., the time
sequence is `3, 0, 1`, the inner for-loop will not terminate and do
out-of-bound writes. This is because once `times[j] > new`, the value
`new` will be added in the current position and the `times[j]` will be
moved to `j+1` position, which makes the if-condition always hold.
Meanwhile, idx will be added one, making the loop keep running without
termination and out-of-bound write.
2. If none of the gts->itime_table[i].time_us is zero, the elements
will just be copied without being sorted as described in the comment
"Sort times from all tables to one and remove duplicates".

For more details, please refer to
https://lore.kernel.org/all/[email-masked].

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

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

	Issue introduced in 6.4 with commit 38416c28e168 and fixed in 6.6.44 with commit 31ff8464ef54
	Issue introduced in 6.4 with commit 38416c28e168 and fixed in 6.10.3 with commit b5046de32fd1
	Issue introduced in 6.4 with commit 38416c28e168 and fixed in 6.11 with commit 5acc3f971a01

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-43825
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/industrialio-gts-helper.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/31ff8464ef540785344994986a010031410f9ff3
	https://git.kernel.org/stable/c/b5046de32fd1532c3f67065197fc1da82f0b5193
	https://git.kernel.org/stable/c/5acc3f971a01be48d5ff4252d8f9cdb87998cdfb