On Mon, Mar 01, 2021, David Woodhouse wrote: > From: David Woodhouse <dwmw@xxxxxxxxxxxx> > > When clearing the per-vCPU shared regions, set the return value to zero > to indicate success. This was causing spurious errors to be returned to > userspace on soft reset. > > Also add a paranoid BUILD_BUG_ON() for compat structure compatibility. > > Fixes: 0c165b3c01fe ("KVM: x86/xen: Allow reset of Xen attributes") > Signed-off-by: David Woodhouse <dwmw@xxxxxxxxxxxx> > --- > arch/x86/kvm/xen.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c > index af8f6562fce4..77b20ff09078 100644 > --- a/arch/x86/kvm/xen.c > +++ b/arch/x86/kvm/xen.c > @@ -187,9 +187,12 @@ int kvm_xen_vcpu_set_attr(struct kvm_vcpu *vcpu, struct kvm_xen_vcpu_attr *data) To avoid similar issues in the future, might be worth throwing "r = -ENOENT" in the default case and have "r" be initialized to '0', or uninitialized to trigger compiler warnings. For any which way: Reviewed-by: Sean Christopherson <seanjc@xxxxxxxxxx> > /* No compat necessary here. */ > BUILD_BUG_ON(sizeof(struct vcpu_info) != > sizeof(struct compat_vcpu_info)); > + BUILD_BUG_ON(offsetof(struct vcpu_info, time) != > + offsetof(struct compat_vcpu_info, time)); > > if (data->u.gpa == GPA_INVALID) { > vcpu->arch.xen.vcpu_info_set = false; > + r = 0; > break; > } > > @@ -206,6 +209,7 @@ int kvm_xen_vcpu_set_attr(struct kvm_vcpu *vcpu, struct kvm_xen_vcpu_attr *data) > case KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO: > if (data->u.gpa == GPA_INVALID) { > vcpu->arch.xen.vcpu_time_info_set = false; > + r = 0; > break; > } > > -- > 2.29.2 >