CVE-2023-53351
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
17/09/2025
Last modified:
18/09/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
drm/sched: Check scheduler work queue before calling timeout handling<br />
<br />
During an IGT GPU reset test we see again oops despite of<br />
commit 0c8c901aaaebc9 (drm/sched: Check scheduler ready before calling<br />
timeout handling).<br />
<br />
It uses ready condition whether to call drm_sched_fault which unwind<br />
the TDR leads to GPU reset.<br />
However it looks the ready condition is overloaded with other meanings,<br />
for example, for the following stack is related GPU reset :<br />
<br />
0 gfx_v9_0_cp_gfx_start<br />
1 gfx_v9_0_cp_gfx_resume<br />
2 gfx_v9_0_cp_resume<br />
3 gfx_v9_0_hw_init<br />
4 gfx_v9_0_resume<br />
5 amdgpu_device_ip_resume_phase2<br />
<br />
does the following:<br />
/* start the ring */<br />
gfx_v9_0_cp_gfx_start(adev);<br />
ring->sched.ready = true;<br />
<br />
The same approach is for other ASICs as well :<br />
gfx_v8_0_cp_gfx_resume<br />
gfx_v10_0_kiq_resume, etc...<br />
<br />
As a result, our GPU reset test causes GPU fault which calls unconditionally gfx_v9_0_fault<br />
and then drm_sched_fault. However now it depends on whether the interrupt service routine<br />
drm_sched_fault is executed after gfx_v9_0_cp_gfx_start is completed which sets the ready<br />
field of the scheduler to true even for uninitialized schedulers and causes oops vs<br />
no fault or when ISR drm_sched_fault is completed prior gfx_v9_0_cp_gfx_start and<br />
NULL pointer dereference does not occur.<br />
<br />
Use the field timeout_wq to prevent oops for uninitialized schedulers.<br />
The field could be initialized by the work queue of resetting the domain.<br />
<br />
v1: Corrections to commit message (Luben)