FAILED: patch "[PATCH] KVM: x86: Add helper to consolidate core logic of" failed to apply to 4.19-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8b44b174f6aca815fc84c2038e4523ef8e32fabb Mon Sep 17 00:00:00 2001
From: Sean Christopherson <[email protected]>
Date: Fri, 5 Nov 2021 09:51:00 +0000
Subject: [PATCH] KVM: x86: Add helper to consolidate core logic of
SET_CPUID{2} flows
Move the core logic of SET_CPUID and SET_CPUID2 to a common helper, the only difference between the two ioctls() is the format of the userspace struct. A future fix will add yet more code to the core logic.
No functional change intended.
Message-Id: <[email protected]>
arch/x86/kvm/cpuid.c +24 -23
@@ -239,6 +239,25 @@ u64 kvm_vcpu_reserved_gpa_bits_raw(struct kvm_vcpu *vcpu)return rsvd_bits (cpuid_maxphyaddr (vcpu),63 ); } +static int kvm_set_cpuid (struct kvm_vcpu *vcpu,struct kvm_cpuid_entry2 *e2, +int nent) +{ +int r; + + r =kvm_check_cpuid (e2, nent); +if (r) +return r; + +kvfree (vcpu->arch.cpuid_entries); + vcpu->arch.cpuid_entries = e2; + vcpu->arch.cpuid_nent = nent; + +kvm_update_cpuid_runtime (vcpu); +kvm_vcpu_after_set_cpuid (vcpu); + +return 0 ; +} +/* when an old userspace process fills a new kernel module */ int kvm_vcpu_ioctl_set_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid *cpuid,
@@ -275,18 +294,9 @@ int kvm_vcpu_ioctl_set_cpuid(struct kvm_vcpu *vcpu, e2[i].padding[2 ] =0 ; } - r =kvm_check_cpuid (e2, cpuid->nent); -if (r) { + r =kvm_set_cpuid (vcpu, e2, cpuid->nent); +if (r)kvfree (e2); - goto out_free_cpuid; - } - -kvfree (vcpu->arch.cpuid_entries); - vcpu->arch.cpuid_entries = e2; - vcpu->arch.cpuid_nent = cpuid->nent; - -kvm_update_cpuid_runtime (vcpu); -kvm_vcpu_after_set_cpuid (vcpu); out_free_cpuid:kvfree (e);
@@ -310,20 +320,11 @@ int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu *vcpu,return PTR_ERR (e2); } - r =kvm_check_cpuid (e2, cpuid->nent); -if (r) { + r =kvm_set_cpuid (vcpu, e2, cpuid->nent); +if (r)kvfree (e2); -return r; - } -kvfree (vcpu->arch.cpuid_entries); - vcpu->arch.cpuid_entries = e2; - vcpu->arch.cpuid_nent = cpuid->nent; - -kvm_update_cpuid_runtime (vcpu); -kvm_vcpu_after_set_cpuid (vcpu); - -return 0 ; +return r; } int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu *vcpu,