{"document":{"category":"csaf_vex","csaf_version":"2.0","title":"CVE-2026-46317: KVM: arm64: Reassign nested_mmus array behind mmu_lock","publisher":{"category":"vendor","name":"HarborGuard Database","namespace":"https://database.harborguard.co"},"tracking":{"id":"CVE-2026-46317","status":"final","version":"1","initial_release_date":"2026-06-09T11:52:30.333Z","current_release_date":"2026-06-14T04:30:12.036Z","revision_history":[{"date":"2026-06-09T11:52:30.333Z","number":"1","summary":"Initial machine-readable export from HarborGuard."}]},"distribution":{"tlp":{"label":"WHITE"},"text":"Public CVE data; freely redistributable."},"notes":[{"category":"description","text":"In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: arm64: Reassign nested_mmus array behind mmu_lock\n\nkvm->arch.nested_mmus[] is walked under kvm->mmu_lock, including from the\nMMU notifier path (kvm_unmap_gfn_range() -> kvm_nested_s2_unmap()), which\ncan run at any time. kvm_vcpu_init_nested() reallocates the array and frees\nthe old buffer while holding only kvm->arch.config_lock, so such a walker\ncan reference the freed array.\n\nAllocate the new array outside of mmu_lock, as the allocation can sleep.\nUnder the lock, copy the existing entries, fix up the back pointers and\nreassign the array. Free the old buffer after dropping the lock, as\nkvfree() can sleep as well.","title":"CVE description"}],"references":[{"category":"self","summary":"CVE-2026-46317 on HarborGuard Database","url":"https://database.harborguard.co/cve/CVE-2026-46317"},{"category":"external","summary":"CVE Record","url":"https://www.cve.org/CVERecord?id=CVE-2026-46317"},{"category":"external","summary":"git.kernel.org","url":"https://git.kernel.org/stable/c/918450ad6010df6ecd2efde12a1409e011da22d6"},{"category":"external","summary":"git.kernel.org","url":"https://git.kernel.org/stable/c/4424dbcb06d68e34e51c019a5781a7dc00731971"},{"category":"external","summary":"git.kernel.org","url":"https://git.kernel.org/stable/c/70543358fa08e0f7cebc3447c3b70fe97ad7aaa8"}]},"product_tree":{"branches":[{"category":"vendor","name":"Linux","branches":[{"category":"product_name","name":"Linux","branches":[{"category":"product_version_range","name":">=4f128f8e1aaac189f83d0f828bcdb2986d8d2e51 <918450ad6010df6ecd2efde12a1409e011da22d6","product":{"name":"Linux Linux >=4f128f8e1aaac189f83d0f828bcdb2986d8d2e51 <918450ad6010df6ecd2efde12a1409e011da22d6","product_id":"CSAFPID-1","product_identification_helper":{"cpe":"cpe:2.3:a:linux:linux:*:*:*:*:*:*:*:*"}}},{"category":"product_version_range","name":">=4f128f8e1aaac189f83d0f828bcdb2986d8d2e51 <4424dbcb06d68e34e51c019a5781a7dc00731971","product":{"name":"Linux Linux >=4f128f8e1aaac189f83d0f828bcdb2986d8d2e51 <4424dbcb06d68e34e51c019a5781a7dc00731971","product_id":"CSAFPID-2","product_identification_helper":{"cpe":"cpe:2.3:a:linux:linux:*:*:*:*:*:*:*:*"}}},{"category":"product_version_range","name":">=4f128f8e1aaac189f83d0f828bcdb2986d8d2e51 <70543358fa08e0f7cebc3447c3b70fe97ad7aaa8","product":{"name":"Linux Linux >=4f128f8e1aaac189f83d0f828bcdb2986d8d2e51 <70543358fa08e0f7cebc3447c3b70fe97ad7aaa8","product_id":"CSAFPID-3","product_identification_helper":{"cpe":"cpe:2.3:a:linux:linux:*:*:*:*:*:*:*:*"}}}]}]},{"category":"vendor","name":"Linux","branches":[{"category":"product_name","name":"Linux","branches":[{"category":"product_version","name":"6.11","product":{"name":"Linux Linux 6.11","product_id":"CSAFPID-4","product_identification_helper":{"cpe":"cpe:2.3:a:linux:linux:6.11:*:*:*:*:*:*:*"}}},{"category":"product_version","name":"0","product":{"name":"Linux Linux 0","product_id":"CSAFPID-5","product_identification_helper":{"cpe":"cpe:2.3:a:linux:linux:6.11:*:*:*:*:*:*:*"}}},{"category":"product_version","name":"6.18.35","product":{"name":"Linux Linux 6.18.35","product_id":"CSAFPID-6","product_identification_helper":{"cpe":"cpe:2.3:a:linux:linux:6.11:*:*:*:*:*:*:*"}}},{"category":"product_version","name":"7.0.12","product":{"name":"Linux Linux 7.0.12","product_id":"CSAFPID-7","product_identification_helper":{"cpe":"cpe:2.3:a:linux:linux:6.11:*:*:*:*:*:*:*"}}},{"category":"product_version","name":"7.1-rc7","product":{"name":"Linux Linux 7.1-rc7","product_id":"CSAFPID-8","product_identification_helper":{"cpe":"cpe:2.3:a:linux:linux:6.11:*:*:*:*:*:*:*"}}}]}]}]},"vulnerabilities":[{"cve":"CVE-2026-46317","title":"KVM: arm64: Reassign nested_mmus array behind mmu_lock","notes":[{"category":"description","text":"In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: arm64: Reassign nested_mmus array behind mmu_lock\n\nkvm->arch.nested_mmus[] is walked under kvm->mmu_lock, including from the\nMMU notifier path (kvm_unmap_gfn_range() -> kvm_nested_s2_unmap()), which\ncan run at any time. kvm_vcpu_init_nested() reallocates the array and frees\nthe old buffer while holding only kvm->arch.config_lock, so such a walker\ncan reference the freed array.\n\nAllocate the new array outside of mmu_lock, as the allocation can sleep.\nUnder the lock, copy the existing entries, fix up the back pointers and\nreassign the array. Free the old buffer after dropping the lock, as\nkvfree() can sleep as well.","title":"CVE description"}],"product_status":{"known_affected":["CSAFPID-1","CSAFPID-2","CSAFPID-3","CSAFPID-4"],"fixed":["CSAFPID-5","CSAFPID-6","CSAFPID-7","CSAFPID-8"]},"scores":[{"cvss_v3":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH"},"products":["CSAFPID-1","CSAFPID-2","CSAFPID-3","CSAFPID-4"]}],"remediations":[{"category":"vendor_fix","details":"Update to a fixed version: 0, 4424dbcb06d68e34e51c019a5781a7dc00731971, 6.18.35, 7.0.12, 7.1-rc7, 70543358fa08e0f7cebc3447c3b70fe97ad7aaa8, 918450ad6010df6ecd2efde12a1409e011da22d6.","product_ids":["CSAFPID-1","CSAFPID-2","CSAFPID-3","CSAFPID-4"]}]}]}