CVE-2026-74607: KVM: SVM: Serialize accesses to the owner and mirror list with separate lock

Greg Kroah-Hartman <[email protected]>
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026082216-CVE-2026-74607-533e@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

KVM: SVM: Serialize accesses to the owner and mirror list with separate lock

Interaction between KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM and
KVM_CAP_VM_COPY_ENC_CONTEXT_FROM can cause two separate issues:

- in sev_migrate_from(), when the destination KVM is a mirror, the mirror
  entry is moved from the source's list to the owner's mirror_vms list,
  without holding the owner's lock unlike other writers of the owner's
  mirror list (sev_vm_copy_enc_context_from(), sev_vm_destroy()).
  A concurrent COPY or destroy can race with sev_migrate_from() and
  corrupt the list.

- In sev_vm_destroy(), the *owner* is still active and could receive
  concurrently a KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM that causes
  sev->enc_context_owner to change.  In this case the incorrect VM
  receives kvm_put_kvm().

The second issue needs particular care because the owner could disappear
altogether (even though the race window is impossibly small) between
reading it and locking it.  There is thus no way to perform the checks
under the owner lock without putting struct kvm under SLAB_TYPESAFE_BY_RCU
(which would allow kvm_get_kvm_safe() under RCU critical section).

It is much simpler to just use a global lock, since the critical
sections are so small and the new lock is always a leaf lock.

The Linux kernel CVE team has assigned CVE-2026-74607 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 5.18 with commit b2125513dfc0dd0ec5a9605138a3c356592cfb73 and fixed in 6.18.45 with commit 47976eaaf0a4eb46dade48b3246779090db9e3ec
	Issue introduced in 5.18 with commit b2125513dfc0dd0ec5a9605138a3c356592cfb73 and fixed in 7.1.9 with commit d728baba0f20e49439fc7831bf3e4e7dee82161a
	Issue introduced in 5.18 with commit b2125513dfc0dd0ec5a9605138a3c356592cfb73 and fixed in 7.2 with commit 1d78d33275ef2a16c6d080910b291d0a97a0e613

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-2026-74607
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:
	arch/x86/kvm/svm/sev.c
	arch/x86/kvm/svm/svm.h


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/47976eaaf0a4eb46dade48b3246779090db9e3ec
	https://git.kernel.org/stable/c/d728baba0f20e49439fc7831bf3e4e7dee82161a
	https://git.kernel.org/stable/c/1d78d33275ef2a16c6d080910b291d0a97a0e613
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.