| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2024-57918: drm/amd/display: fix page fault due to max surface definition mismatch |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| drm/amd/display: fix page fault due to max surface definition mismatch |
| |
| DC driver is using two different values to define the maximum number of |
| surfaces: MAX_SURFACES and MAX_SURFACE_NUM. Consolidate MAX_SURFACES as |
| the unique definition for surface updates across DC. |
| |
| It fixes page fault faced by Cosmic users on AMD display versions that |
| support two overlay planes, since the introduction of cursor overlay |
| mode. |
| |
| [Nov26 21:33] BUG: unable to handle page fault for address: 0000000051d0f08b |
| [ +0.000015] #PF: supervisor read access in kernel mode |
| [ +0.000006] #PF: error_code(0x0000) - not-present page |
| [ +0.000005] PGD 0 P4D 0 |
| [ +0.000007] Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI |
| [ +0.000006] CPU: 4 PID: 71 Comm: kworker/u32:6 Not tainted 6.10.0+ #300 |
| [ +0.000006] Hardware name: Valve Jupiter/Jupiter, BIOS F7A0131 01/30/2024 |
| [ +0.000007] Workqueue: events_unbound commit_work [drm_kms_helper] |
| [ +0.000040] RIP: 0010:copy_stream_update_to_stream.isra.0+0x30d/0x750 [amdgpu] |
| [ +0.000847] Code: 8b 10 49 89 94 24 f8 00 00 00 48 8b 50 08 49 89 94 24 00 01 00 00 8b 40 10 41 89 84 24 08 01 00 00 49 8b 45 78 48 85 c0 74 0b <0f> b6 00 41 88 84 24 90 64 00 00 49 8b 45 60 48 85 c0 74 3b 48 8b |
| [ +0.000010] RSP: 0018:ffffc203802f79a0 EFLAGS: 00010206 |
| [ +0.000009] RAX: 0000000051d0f08b RBX: 0000000000000004 RCX: ffff9f964f0a8070 |
| [ +0.000004] RDX: ffff9f9710f90e40 RSI: ffff9f96600c8000 RDI: ffff9f964f000000 |
| [ +0.000004] RBP: ffffc203802f79f8 R08: 0000000000000000 R09: 0000000000000000 |
| [ +0.000005] R10: 0000000000000000 R11: 0000000000000000 R12: ffff9f96600c8000 |
| [ +0.000004] R13: ffff9f9710f90e40 R14: ffff9f964f000000 R15: ffff9f96600c8000 |
| [ +0.000004] FS: 0000000000000000(0000) GS:ffff9f9970000000(0000) knlGS:0000000000000000 |
| [ +0.000005] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 |
| [ +0.000005] CR2: 0000000051d0f08b CR3: 00000002e6a20000 CR4: 0000000000350ef0 |
| [ +0.000005] Call Trace: |
| [ +0.000011] <TASK> |
| [ +0.000010] ? __die_body.cold+0x19/0x27 |
| [ +0.000012] ? page_fault_oops+0x15a/0x2d0 |
| [ +0.000014] ? exc_page_fault+0x7e/0x180 |
| [ +0.000009] ? asm_exc_page_fault+0x26/0x30 |
| [ +0.000013] ? copy_stream_update_to_stream.isra.0+0x30d/0x750 [amdgpu] |
| [ +0.000739] ? dc_commit_state_no_check+0xd6c/0xe70 [amdgpu] |
| [ +0.000470] update_planes_and_stream_state+0x49b/0x4f0 [amdgpu] |
| [ +0.000450] ? srso_return_thunk+0x5/0x5f |
| [ +0.000009] ? commit_minimal_transition_state+0x239/0x3d0 [amdgpu] |
| [ +0.000446] update_planes_and_stream_v2+0x24a/0x590 [amdgpu] |
| [ +0.000464] ? srso_return_thunk+0x5/0x5f |
| [ +0.000009] ? sort+0x31/0x50 |
| [ +0.000007] ? amdgpu_dm_atomic_commit_tail+0x159f/0x3a30 [amdgpu] |
| [ +0.000508] ? srso_return_thunk+0x5/0x5f |
| [ +0.000009] ? amdgpu_crtc_get_scanout_position+0x28/0x40 [amdgpu] |
| [ +0.000377] ? srso_return_thunk+0x5/0x5f |
| [ +0.000009] ? drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x160/0x390 [drm] |
| [ +0.000058] ? srso_return_thunk+0x5/0x5f |
| [ +0.000005] ? dma_fence_default_wait+0x8c/0x260 |
| [ +0.000010] ? srso_return_thunk+0x5/0x5f |
| [ +0.000005] ? wait_for_completion_timeout+0x13b/0x170 |
| [ +0.000006] ? srso_return_thunk+0x5/0x5f |
| [ +0.000005] ? dma_fence_wait_timeout+0x108/0x140 |
| [ +0.000010] ? commit_tail+0x94/0x130 [drm_kms_helper] |
| [ +0.000024] ? process_one_work+0x177/0x330 |
| [ +0.000008] ? worker_thread+0x266/0x3a0 |
| [ +0.000006] ? __pfx_worker_thread+0x10/0x10 |
| [ +0.000004] ? kthread+0xd2/0x100 |
| [ +0.000006] ? __pfx_kthread+0x10/0x10 |
| [ +0.000006] ? ret_from_fork+0x34/0x50 |
| [ +0.000004] ? __pfx_kthread+0x10/0x10 |
| [ +0.000005] ? ret_from_fork_asm+0x1a/0x30 |
| [ +0.000011] </TASK> |
| |
| (cherry picked from commit 1c86c81a86c60f9b15d3e3f43af0363cf56063e7) |
| |
| The Linux kernel CVE team has assigned CVE-2024-57918 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 6.11 with commit 1b04dcca4fb10dd3834893a60de74edd99f2bfaf and fixed in 6.12.10 with commit 37b8de96ae48c7bb1a17cd5585195c43fcacbe94 |
| Issue introduced in 6.11 with commit 1b04dcca4fb10dd3834893a60de74edd99f2bfaf and fixed in 6.13 with commit 7de8d5c90be9ad9f6575e818a674801db2ada794 |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2024-57918 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| drivers/gpu/drm/amd/display/dc/core/dc.c |
| drivers/gpu/drm/amd/display/dc/core/dc_state.c |
| drivers/gpu/drm/amd/display/dc/dc.h |
| drivers/gpu/drm/amd/display/dc/dc_stream.h |
| drivers/gpu/drm/amd/display/dc/dc_types.h |
| drivers/gpu/drm/amd/display/dc/dml2/dml2_mall_phantom.c |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/37b8de96ae48c7bb1a17cd5585195c43fcacbe94 |
| https://git.kernel.org/stable/c/7de8d5c90be9ad9f6575e818a674801db2ada794 |