В ядре Linux устранена следующая уязвимость:
drm/amd/display: исправлено разыменование нулевого указателя в amdgpu_dm_crtc_set_vblank().
amdgpu_dm_crtc_set_vblank() разыменовывает acrtc_state->stream, когда
vblank включен/запрошен из DRM_IOCTL_MODE_CRTC_GET_SEQUENCE раньше
к нему присоединяется ручей. ОШИБКА: разыменование нулевого указателя ядра, адрес: 0000000000000008. RIP: amdgpu_dm_crtc_set_vblank+0x6b/0x4d0 [amdgpu]
Отслеживание вызова:
drm_vblank_enable
drm_vblank_get
drm_crtc_get_sequence_ioctl
drm_ioctl_kernel
drm_ioctl
Воспроизводится путем запуска VKCTS с включенными тестами WSI на RADV.
Защитите путь включения для acrtc_state->stream, который не равен NULL, что соответствует
существующие проверки в этой функции.
(вишня выбрана из коммита 7b1b31bf6942e6f43509b48da23f8e27269aac39)
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: drm/amd/display: Fix NULL pointer dereference in amdgpu_dm_crtc_set_vblank() amdgpu_dm_crtc_set_vblank() dereferences acrtc_state->stream when vblank is enabled/queried from DRM_IOCTL_MODE_CRTC_GET_SEQUENCE before a stream is attached to it. BUG: kernel NULL pointer dereference, address: 0000000000000008 RIP: amdgpu_dm_crtc_set_vblank+0x6b/0x4d0 [amdgpu] Call Trace: drm_vblank_enable drm_vblank_get drm_crtc_get_sequence_ioctl drm_ioctl_kernel drm_ioctl Reproduced by running VKCTS with WSI tests enabled on RADV. Guard the enable path on acrtc_state->stream being non-NULL, matching the existing checks in this function. (cherry picked from commit 7b1b31bf6942e6f43509b48da23f8e27269aac39)