| 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-57897: drm/amdkfd: Correct the migration DMA map direction |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| drm/amdkfd: Correct the migration DMA map direction |
| |
| The SVM DMA device map direction should be set the same as |
| the DMA unmap setting, otherwise the DMA core will report |
| the following warning. |
| |
| Before finialize this solution, there're some discussion on |
| the DMA mapping type(stream-based or coherent) in this KFD |
| migration case, followed by https://lore.kernel.org/all/04d4ab32 |
| -45a1-4b88-86ee-fb0f35a0ca40@amd.com/T/. |
| |
| As there's no dma_sync_single_for_*() in the DMA buffer accessed |
| that because this migration operation should be sync properly and |
| automatically. Give that there's might not be a performance problem |
| in various cache sync policy of DMA sync. Therefore, in order to |
| simplify the DMA direction setting alignment, let's set the DMA map |
| direction as BIDIRECTIONAL. |
| |
| [ 150.834218] WARNING: CPU: 8 PID: 1812 at kernel/dma/debug.c:1028 check_unmap+0x1cc/0x930 |
| [ 150.834225] Modules linked in: amdgpu(OE) amdxcp drm_exec(OE) gpu_sched drm_buddy(OE) drm_ttm_helper(OE) ttm(OE) drm_suballoc_helper(OE) drm_display_helper(OE) drm_kms_helper(OE) i2c_algo_bit rpcsec_gss_krb5 auth_rpcgss nfsv4 nfs lockd grace netfs xt_conntrack xt_MASQUERADE nf_conntrack_netlink xfrm_user xfrm_algo iptable_nat xt_addrtype iptable_filter br_netfilter nvme_fabrics overlay nfnetlink_cttimeout nfnetlink openvswitch nsh nf_conncount nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c bridge stp llc sch_fq_codel intel_rapl_msr amd_atl intel_rapl_common snd_hda_codec_realtek snd_hda_codec_generic snd_hda_scodec_component snd_hda_codec_hdmi snd_hda_intel snd_intel_dspcfg edac_mce_amd snd_pci_acp6x snd_hda_codec snd_acp_config snd_hda_core snd_hwdep snd_soc_acpi kvm_amd sunrpc snd_pcm kvm binfmt_misc snd_seq_midi crct10dif_pclmul snd_seq_midi_event ghash_clmulni_intel sha512_ssse3 snd_rawmidi nls_iso8859_1 sha256_ssse3 sha1_ssse3 snd_seq aesni_intel snd_seq_device crypto_simd snd_timer cryptd input_leds |
| [ 150.834310] wmi_bmof serio_raw k10temp rapl snd sp5100_tco ipmi_devintf soundcore ccp ipmi_msghandler cm32181 industrialio mac_hid msr parport_pc ppdev lp parport efi_pstore drm(OE) ip_tables x_tables pci_stub crc32_pclmul nvme ahci libahci i2c_piix4 r8169 nvme_core i2c_designware_pci realtek i2c_ccgx_ucsi video wmi hid_generic cdc_ether usbnet usbhid hid r8152 mii |
| [ 150.834354] CPU: 8 PID: 1812 Comm: rocrtst64 Tainted: G OE 6.10.0-custom #492 |
| [ 150.834358] Hardware name: AMD Majolica-RN/Majolica-RN, BIOS RMJ1009A 06/13/2021 |
| [ 150.834360] RIP: 0010:check_unmap+0x1cc/0x930 |
| [ 150.834363] Code: c0 4c 89 4d c8 e8 34 bf 86 00 4c 8b 4d c8 4c 8b 45 c0 48 8b 4d b8 48 89 c6 41 57 4c 89 ea 48 c7 c7 80 49 b4 84 e8 b4 81 f3 ff <0f> 0b 48 c7 c7 04 83 ac 84 e8 76 ba fc ff 41 8b 76 4c 49 8d 7e 50 |
| [ 150.834365] RSP: 0018:ffffaac5023739e0 EFLAGS: 00010086 |
| [ 150.834368] RAX: 0000000000000000 RBX: ffffffff8566a2e0 RCX: 0000000000000027 |
| [ 150.834370] RDX: ffff8f6a8f621688 RSI: 0000000000000001 RDI: ffff8f6a8f621680 |
| [ 150.834372] RBP: ffffaac502373a30 R08: 00000000000000c9 R09: ffffaac502373850 |
| [ 150.834373] R10: ffffaac502373848 R11: ffffffff84f46328 R12: ffffaac502373a40 |
| [ 150.834375] R13: ffff8f6741045330 R14: ffff8f6741a77700 R15: ffffffff84ac831b |
| [ 150.834377] FS: 00007faf0fc94c00(0000) GS:ffff8f6a8f600000(0000) knlGS:0000000000000000 |
| [ 150.834379] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 |
| [ 150.834381] CR2: 00007faf0b600020 CR3: 000000010a52e000 CR4: 0000000000350ef0 |
| [ 150.834383] Call Trace: |
| [ 150.834385] <TASK> |
| [ 150.834387] ? show_regs+0x6d/0x80 |
| [ 150.834393] ? __warn+0x8c/0x140 |
| [ 150.834397] ? check_unmap+0x1cc/0x930 |
| [ 150.834400] ? report_bug+0x193/0x1a0 |
| [ 150.834406] ? handle_bug+0x46/0x80 |
| [ 150.834410] ? exc_invalid_op+0x1d/0x80 |
| [ 150.834413] ? asm_exc_invalid_op+0x1f/0x30 |
| [ 150.834420] ? check_unmap+0x1cc/0x930 |
| [ 150.834425] debug_dma_unmap_page+0x86/0x90 |
| [ 150.834431] ? srso_return_thunk+0x5/0x5f |
| [ 150.834435] ? rmap_walk+0x28/0x50 |
| [ 150.834438] ? srso_return_thunk+0x5/0x5f |
| [ 150.834441] ? remove_migration_ptes+0x79/0x80 |
| [ 150.834445] ? srso_return_thunk+0x5/0x5f |
| [ 150.834448] dma_unmap_page_attrs+0xfa/0x1d0 |
| [ 150.834453] svm_range_dma_unmap_dev+0x8a/0xf0 [amdgpu] |
| [ 150.834710] svm_migrate_ram_to_vram+0x361/0x740 [amdgpu] |
| [ 150.834914] svm_migrate_to_vram+0xa8/0xe0 [amdgpu] |
| [ 150.835111] svm_range_set_attr+0xff2/0x1450 [amdgpu] |
| [ 150.835311] svm_ioctl+0x4a/0x50 [amdgpu] |
| [ 150.835510] kfd_ioctl_svm+0x54/0x90 [amdgpu] |
| [ 150.835701] kfd_ioctl+0x3c2/0x530 [amdgpu] |
| [ 150.835888] ? __pfx_kfd_ioctl_svm+0x10/0x10 [amdgpu] |
| [ 150.836075] ? srso_return_thunk+0x5/0x5f |
| [ 150.836080] ? tomoyo_file_ioctl+0x20/0x30 |
| [ 150.836086] __x64_sys_ioctl+0x9c/0xd0 |
| [ 150.836091] x64_sys_call+0x1219/0x20d0 |
| [ 150.836095] do_syscall_64+0x51/0x120 |
| [ 150.836098] entry_SYSCALL_64_after_hwframe+0x76/0x7e |
| [ 150.836102] RIP: 0033:0x7faf0f11a94f |
| [ 150.836105] Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <41> 89 c0 3d 00 f0 ff ff 77 1f 48 8b 44 24 18 64 48 2b 04 25 28 00 |
| [ 150.836107] RSP: 002b:00007ffeced26bc0 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 |
| [ 150.836110] RAX: ffffffffffffffda RBX: 000055c683528fb0 RCX: 00007faf0f11a94f |
| [ 150.836112] RDX: 00007ffeced26c60 RSI: 00000000c0484b20 RDI: 0000000000000003 |
| [ 150.836114] RBP: 00007ffeced26c50 R08: 0000000000000000 R09: 0000000000000001 |
| [ 150.836115] R10: 0000000000000032 R11: 0000000000000246 R12: 000055c683528bd0 |
| [ 150.836117] R13: 0000000000000000 R14: 0000000000000021 R15: 0000000000000000 |
| [ 150.836122] </TASK> |
| [ 150.836124] ---[ end trace 0000000000000000 ]--- |
| |
| The Linux kernel CVE team has assigned CVE-2024-57897 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Fixed in 5.15.176 with commit 22d36ad92e5703e2e9bdf228990c0999d5d53ea3 |
| Fixed in 6.1.124 with commit 465b18e1c518e799593797d4603f4ab76de4e1d8 |
| Fixed in 6.6.70 with commit d0fafe701c6aca785cc8685f9f76fdc73e662f47 |
| Fixed in 6.12.9 with commit de39f72953953ca7a2630f9b80ccdfef40568746 |
| Fixed in 6.13 with commit 5c3de6b02d38eb9386edf50490e050bb44398e40 |
| |
| 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-57897 |
| 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/amdkfd/kfd_migrate.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/22d36ad92e5703e2e9bdf228990c0999d5d53ea3 |
| https://git.kernel.org/stable/c/465b18e1c518e799593797d4603f4ab76de4e1d8 |
| https://git.kernel.org/stable/c/d0fafe701c6aca785cc8685f9f76fdc73e662f47 |
| https://git.kernel.org/stable/c/de39f72953953ca7a2630f9b80ccdfef40568746 |
| https://git.kernel.org/stable/c/5c3de6b02d38eb9386edf50490e050bb44398e40 |