]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
KVM: TDX: Reject concurrent change to CPUID entry count
authorBinbin Wu <binbin.wu@linux.intel.com>
Fri, 10 Jul 2026 03:53:23 +0000 (11:53 +0800)
committerSean Christopherson <seanjc@google.com>
Fri, 10 Jul 2026 16:06:04 +0000 (09:06 -0700)
commitcfbebb55e5127dc162e73fa8956000055a78606c
tree369a6da0df457b1bdd97a46b135abf611c06b501
parentdf371f2c62446c5fc5c5c1c91b47c219bb0d2100
KVM: TDX: Reject concurrent change to CPUID entry count

Reject KVM_TDX_INIT_VM if userspace changes cpuid.nent between the
initial read and the subsequent copy of the initialization data.

tdx_td_init() first reads user_data->cpuid.nent to size the flexible
kvm_tdx_init_vm copy.  The copied structure also contains cpuid.nent,
and that field can differ from the value used to size the allocation if
userspace modifies the input concurrently.  setup_tdparams_cpuids() later
passes init_vm->cpuid.nent to kvm_find_cpuid_entry2(), which uses it as
the array bound for the copied entries.

Require the copied count to match the value used to size the allocation
so that CPUID parsing cannot access beyond the entries actually copied.

Fixes: 0bd0a4a1428b ("KVM: TDX: Replace kmalloc + copy_from_user with memdup_user in tdx_td_init()")
Reported-by: Sashiko:gemini-3.1-pro-preview
Cc: <stable@vger.kernel.org>
Signed-off-by: Binbin Wu <binbin.wu@linux.intel.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
Reviewed-by: Thorsten Blum <thorsten.blum@linux.dev>
Link: https://patch.msgid.link/20260710035324.3170534-1-binbin.wu@linux.intel.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/vmx/tdx.c