Linux: drm/amdkfd: Avoid integer underflow in EOP ring size calculation.
What fixes it
- 287a34c4d712e0bdb67751e21316d9c8d75a528aLinuxCVE List
- 8ee521b8b189799e361d4233c5180ba56656d4d4LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
drm/amdkfd: Avoid integer underflow in EOP ring size calculation.
The low 6 bits of cp_hqd_eop_control store the base-2 logarithm of the EOP ring size. This was calculated as
order_base_2(q->eop_ring_buffer_size / 4) - 1
But order_base_2 can in theory return 0, so this could underflow (although in practice the ring buffer size cannot be less than 4096).
Change this to
order_base_2(q->eop_ring_buffer_size / 8)
using properties of logarithms.
Also add to the above comment to make the mathematics more clear.
(cherry picked from commit f0f43fcf8b2b3a924cad9444340921c96ed5f634)
Text from CVE List
Affected versions 6
- Linuxaffected: d696d536f0a97ac779d6176107ac4e96d0a2f8b9 before 287a34c4d712e0bdb67751e21316d9c8d75a528aCVE List
- Linuxaffected: d696d536f0a97ac779d6176107ac4e96d0a2f8b9 before 8ee521b8b189799e361d4233c5180ba56656d4d4CVE List
- Linuxaffected: 4.3CVE List
- Linuxunaffected: all versions before 4.3CVE List
- Linuxunaffected: 7.2.8 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List