{"id":"CVE-2026-98719","title":"KVM: SEV: Nullify \"have run CPUs\" mask pointer when freeing it","summary":"In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: SEV: Nullify \"have run CPUs\" mask pointer when freeing it\n\nNullify have_run_cpus when freeing the mask, particularly in the error path\nof __sev_guest_init(), so th…","severity":"none","vendor":"Linux","product":"Linux","affected":["Linux >= 6aef7cf800098749ff5d660222efaf6e01e98c09 < b1de3ebf59507e0edacaa5cfa2225bc1869e1b63","Linux >= 9784e5ca91b37b387f3f414af4340c54f7a63566 < 0fbc7fec2242de6c3dcea6de55573c428e820173","Linux >= 12c1f6e03f944e399bd2c88441dca5dc702b95a5 < 8abbc76120a74bfba1851bd97528099d715e45c6","Linux >= 6.18.55 < 6.18.56","Linux >= 7.2.9 < 7.2.10","Linux 7.3-rc5"],"published":"2026-10-18","updated":"2026-10-18","sourceUpdated":"2026-10-18T15:46:54.631Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-98719","references":[{"url":"https://git.kernel.org/stable/c/b1de3ebf59507e0edacaa5cfa2225bc1869e1b63"},{"url":"https://git.kernel.org/stable/c/0fbc7fec2242de6c3dcea6de55573c428e820173"},{"url":"https://git.kernel.org/stable/c/8abbc76120a74bfba1851bd97528099d715e45c6"}],"tags":["cve.org"],"ingestedAt":"2026-10-18T16:47:32.510Z","slug":"CVE-2026-98719","body":"## Overview\n\nIn the Linux kernel, the following vulnerability has been resolved:\n\nKVM: SEV: Nullify \"have run CPUs\" mask pointer when freeing it\n\nNullify have_run_cpus when freeing the mask, particularly in the error path\nof __sev_guest_init(), so that KVM doesn't have to subtly use sev->active\nto track whether or not the mask has been freed.  As pointed out by Sashiko,\nblindly freeing the mask in sev_vm_destroy() results in a double-free if\nthe mask is freed if __sev_guest_init() fails.\n\nThrow the logic in a helper as nullifying the pointer is frustratingly\ndifficult and weird due to have_run_cpus being a single-entry array when\nCPUMASK_OFFSTACK=n.  Deliberately don't use CPUMASK_VAR_NULL, as it's not\ndirectly assignable when the cpumask is on-stack, e.g. requires using a\nlocal variable and a memcpy(), which is beyond ridiculous.  Furthermore,\nwhile clearing the on-stack bitmask is an unnecessary and arguably unwanted\nside effect, KVM absolutely relies on '0' being the \"null\" value given that\nthe struct is zero-allocated.\n\nOpportunistically add an alloc() helper to pair with free(); there are just\nenough call sites to make doing so worthwhile.\n\n## Affected\n\n- `Linux >= 6aef7cf800098749ff5d660222efaf6e01e98c09 < b1de3ebf59507e0edacaa5cfa2225bc1869e1b63`\n- `Linux >= 9784e5ca91b37b387f3f414af4340c54f7a63566 < 0fbc7fec2242de6c3dcea6de55573c428e820173`\n- `Linux >= 12c1f6e03f944e399bd2c88441dca5dc702b95a5 < 8abbc76120a74bfba1851bd97528099d715e45c6`\n- `Linux >= 6.18.55 < 6.18.56`\n- `Linux >= 7.2.9 < 7.2.10`\n- `Linux 7.3-rc5`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"sunlit","depthScore":3,"depthScoreParts":{"impact":2.8,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}