{"id":"CVE-2024-38610","summary":"drivers/virt/acrn: fix PFNMAP PTE checks in acrn_vm_ram_map()","details":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrivers/virt/acrn: fix PFNMAP PTE checks in acrn_vm_ram_map()\n\nPatch series \"mm: follow_pte() improvements and acrn follow_pte() fixes\".\n\nPatch #1 fixes a bunch of issues I spotted in the acrn driver.  It\ncompiles, that's all I know.  I'll appreciate some review and testing from\nacrn folks.\n\nPatch #2+#3 improve follow_pte(), passing a VMA instead of the MM, adding\nmore sanity checks, and improving the documentation.  Gave it a quick test\non x86-64 using VM_PAT that ends up using follow_pte().\n\n\nThis patch (of 3):\n\nWe currently miss handling various cases, resulting in a dangerous\nfollow_pte() (previously follow_pfn()) usage.\n\n(1) We're not checking PTE write permissions.\n\nMaybe we should simply always require pte_write() like we do for\npin_user_pages_fast(FOLL_WRITE)? Hard to tell, so let's check for\nACRN_MEM_ACCESS_WRITE for now.\n\n(2) We're not rejecting refcounted pages.\n\nAs we are not using MMU notifiers, messing with refcounted pages is\ndangerous and can result in use-after-free. Let's make sure to reject them.\n\n(3) We are only looking at the first PTE of a bigger range.\n\nWe only lookup a single PTE, but memmap-\u003elen may span a larger area.\nLet's loop over all involved PTEs and make sure the PFN range is\nactually contiguous. Reject everything else: it couldn't have worked\neither way, and rather made use access PFNs we shouldn't be accessing.","modified":"2026-04-02T12:16:55.260219Z","published":"2024-06-19T13:56:12.083Z","related":["MGASA-2024-0263","MGASA-2024-0266","SUSE-SU-2024:2571-1","SUSE-SU-2024:2896-1","SUSE-SU-2024:2973-1","SUSE-SU-2025:20008-1","SUSE-SU-2025:20028-1"],"database_specific":{"cna_assigner":"Linux","osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/38xxx/CVE-2024-38610.json"},"references":[{"type":"WEB","url":"https://git.kernel.org/stable/c/2c8d6e24930b8ef7d4a81787627c559ae0e0d3bb"},{"type":"WEB","url":"https://git.kernel.org/stable/c/3d6586008f7b638f91f3332602592caa8b00b559"},{"type":"WEB","url":"https://git.kernel.org/stable/c/4c4ba3cf3a15ccfbaf787d0296fa42cdb00da9b4"},{"type":"WEB","url":"https://git.kernel.org/stable/c/5c6705aa47b5b78d7ad36fea832bb69caa5bf49a"},{"type":"WEB","url":"https://git.kernel.org/stable/c/afeb0e69627695f759fc73c39c1640dbf8649b32"},{"type":"WEB","url":"https://git.kernel.org/stable/c/e873f36ec890bece26ecce850e969917bceebbb6"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/38xxx/CVE-2024-38610.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-38610"},{"type":"PACKAGE","url":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","events":[{"introduced":"b9c43aa0b18da5619aac347d54cb67fe30d1f884"},{"fixed":"5c6705aa47b5b78d7ad36fea832bb69caa5bf49a"}]},{"type":"GIT","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","events":[{"introduced":"8a6e85f75a83d16a71077e41f2720c691f432002"},{"fixed":"afeb0e69627695f759fc73c39c1640dbf8649b32"},{"fixed":"e873f36ec890bece26ecce850e969917bceebbb6"},{"fixed":"4c4ba3cf3a15ccfbaf787d0296fa42cdb00da9b4"},{"fixed":"2c8d6e24930b8ef7d4a81787627c559ae0e0d3bb"},{"fixed":"3d6586008f7b638f91f3332602592caa8b00b559"}]},{"type":"GIT","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","events":[{"introduced":"0"},{"last_affected":"149d5fb7e0124c3763e92edd1fde19417f4d2d09"},{"last_affected":"02098ac42b7ff055ec72cd083ee1eb0a23481a19"}]}],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-38610.json"}}],"schema_version":"1.7.5"}