@@ -4607,17 +4607,18 @@ static void kvm_vm_ioctl_get_pit(struct kvm *kvm, struct kvm_pit_state *ps)
mutex_unlock(&kps->lock);
}
-static int kvm_vm_ioctl_set_pit(struct kvm *kvm, struct kvm_pit_state *ps)
+static void kvm_vm_ioctl_set_pit(struct kvm *kvm, struct kvm_pit_state *ps)
{
int i;
struct kvm_pit *pit = kvm->arch.vpit;
+ BUILD_BUG_ON(sizeof(*ps) != sizeof(pit->pit_state.channels));
+
mutex_lock(&pit->pit_state.lock);
memcpy(&pit->pit_state.channels, ps, sizeof(*ps));
for (i = 0; i < 3; i++)
kvm_pit_load_count(pit, i, ps->channels[i].count, 0);
mutex_unlock(&pit->pit_state.lock);
- return 0;
}
static int kvm_vm_ioctl_get_pit2(struct kvm *kvm, struct kvm_pit_state2 *ps)
@@ -4994,7 +4995,8 @@ long kvm_arch_vm_ioctl(struct file *filp,
r = -ENXIO;
if (!kvm->arch.vpit)
goto out;
- r = kvm_vm_ioctl_set_pit(kvm, &u.ps);
+ kvm_vm_ioctl_set_pit(kvm, &u.ps);
+ r = 0;
break;
}
case KVM_GET_PIT2: {