In the Linux kernel, the following vulnerability has been resolved:
drm/amd/display: Fix division by zero in setupdscconfig
When sliceheight is 0, the division by sliceheight in the calculation of the number of slices will cause a division by zero driver crash. This leaves the kernel in a state that requires a reboot. This patch adds a check to avoid the division by zero.
The stack trace below is for the 6.8.4 Kernel. I reproduced the issue on a Z16 Gen 2 Lenovo Thinkpad with a Apple Studio Display monitor connected via Thunderbolt. The amdgpu driver crashed with this exception when I rebooted the system with the monitor connected.
kernel: ? die (arch/x86/kernel/dumpstack.c:421 arch/x86/kernel/dumpstack.c:434 arch/x86/kernel/dumpstack.c:447) kernel: ? dotrap (arch/x86/kernel/traps.c:113 arch/x86/kernel/traps.c:154) kernel: ? setupdscconfig (drivers/gpu/drm/amd/amdgpu/../display/dc/dsc/dcdsc.c:1053) amdgpu kernel: ? doerrortrap (./arch/x86/include/asm/traps.h:58 arch/x86/kernel/traps.c:175) kernel: ? setupdscconfig (drivers/gpu/drm/amd/amdgpu/../display/dc/dsc/dcdsc.c:1053) amdgpu kernel: ? excdivideerror (arch/x86/kernel/traps.c:194 (discriminator 2)) kernel: ? setupdscconfig (drivers/gpu/drm/amd/amdgpu/../display/dc/dsc/dcdsc.c:1053) amdgpu kernel: ? asmexcdivideerror (./arch/x86/include/asm/idtentry.h:548) kernel: ? setupdscconfig (drivers/gpu/drm/amd/amdgpu/../display/dc/dsc/dcdsc.c:1053) amdgpu kernel: dcdsccomputeconfig (drivers/gpu/drm/amd/amdgpu/../display/dc/dsc/dcdsc.c:1109) amdgpu
After applying this patch, the driver no longer crashes when the monitor is connected and the system is rebooted. I believe this is the same issue reported for 3113.
[
{
"signature_type": "Line",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f187fcbbb8f8bf10c6687f0beae22509369f7563",
"digest": {
"line_hashes": [
"226797090043572087686145622376144068643",
"245758268397078407097468942902818393403",
"165854027180667598407122656498889367054",
"188437890406969942296490174134488683285"
],
"threshold": 0.9
},
"id": "CVE-2024-36969-1e79df72"
},
{
"signature_type": "Line",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7e4f50dfc98c49b3dc6875a35c3112522fb25639",
"digest": {
"line_hashes": [
"226797090043572087686145622376144068643",
"245758268397078407097468942902818393403",
"165854027180667598407122656498889367054",
"188437890406969942296490174134488683285"
],
"threshold": 0.9
},
"id": "CVE-2024-36969-2a3b7be1"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c",
"function": "setup_dsc_config"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@f187fcbbb8f8bf10c6687f0beae22509369f7563",
"digest": {
"length": 4453.0,
"function_hash": "136451651058439456728262155436294536674"
},
"id": "CVE-2024-36969-2e58fcce"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c",
"function": "setup_dsc_config"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7e4f50dfc98c49b3dc6875a35c3112522fb25639",
"digest": {
"length": 4453.0,
"function_hash": "136451651058439456728262155436294536674"
},
"id": "CVE-2024-36969-3fa251ef"
},
{
"signature_type": "Line",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a32c8f951c8a456c1c251e1dcdf21787f8066445",
"digest": {
"line_hashes": [
"226797090043572087686145622376144068643",
"245758268397078407097468942902818393403",
"165854027180667598407122656498889367054",
"188437890406969942296490174134488683285"
],
"threshold": 0.9
},
"id": "CVE-2024-36969-50b5e109"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c",
"function": "setup_dsc_config"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@91402e0e5de9124a3108db7a14163fcf9a6d322f",
"digest": {
"length": 4144.0,
"function_hash": "12051614601210366741590347399883330325"
},
"id": "CVE-2024-36969-95663f76"
},
{
"signature_type": "Line",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@91402e0e5de9124a3108db7a14163fcf9a6d322f",
"digest": {
"line_hashes": [
"226797090043572087686145622376144068643",
"245758268397078407097468942902818393403",
"165854027180667598407122656498889367054",
"188437890406969942296490174134488683285"
],
"threshold": 0.9
},
"id": "CVE-2024-36969-b5947ba2"
},
{
"signature_type": "Function",
"deprecated": false,
"signature_version": "v1",
"target": {
"file": "drivers/gpu/drm/amd/display/dc/dsc/dc_dsc.c",
"function": "setup_dsc_config"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a32c8f951c8a456c1c251e1dcdf21787f8066445",
"digest": {
"length": 4102.0,
"function_hash": "304235796950746479168672348373774068613"
},
"id": "CVE-2024-36969-f494a08c"
}
]