drm/amd/display: Fix NULL sink dereference in USB4 bandwidth functions
Impact
In the Linux kernel, the following vulnerability has been resolved:
Source excerpt · LinuxAffected packages
Affected products
Vendor version evidence. Product records are separate from automatic dependency matching.
Linux · Linux
Other versions: unaffected
| Version / range | Source status |
|---|---|
| 0b1eebd359685dd681f6e0df5540a5bb985a27bf to before 4c8b5e5b9776ad08138d79b14238c5742b32911b | affected |
| 8fa813b7fd1eccbed13e126166cf764f1f11a7d3 to before 55a67aa89342545b89f469dea6f29bfb6fac6f3d | affected |
Linux · Linux
Other versions: unaffected
| Version / range | Source status |
|---|---|
| 7.2.9 to before 7.2.13 | affected |
Original source description
In the Linux kernel, the following vulnerability has been resolved:
drm/amd/display: Fix NULL sink dereference in USB4 bandwidth functions
allocate_usb4_bandwidth_for_stream() and allocate_usb4_bandwidth() both use ASSERT(stream->sink) before dereferencing stream->sink->link. ASSERT is compiled out in production builds, so a NULL stream->sink causes a NULL pointer dereference.
link_set_dpms_off() already guards two earlier accesses to stream->sink with explicit NULL checks, confirming that stream->sink can legitimately be NULL. The subsequent call to deallocate_usb4_bandwidth() had no equivalent guard.
Replace the ASSERT() calls with proper NULL checks that return false early, and add a matching stream->sink guard at the call site in link_set_dpms_off() consistent with the surrounding pattern.
v2: Keep the existing ASSERT() calls for diagnostics (to report unexpected NULL sink), and add explicit NULL checks that return false before dereferencing stream->sink. Also add a matching stream->sink guard at the deallocation call site in link_set_dpms_off(). (Alex)
(cherry picked from commit 98029a0ce61feb52c563f65349dd9b25f672e355)