summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Rosenfeld <hans.rosenfeld@joyent.com>2018-12-05 22:34:02 +0000
committerHans Rosenfeld <hans.rosenfeld@joyent.com>2018-12-05 22:59:48 +0000
commit4966850cbd32c33aeed41ff4610b6ac82c195962 (patch)
treeef920e16beac401955defe97bce761eadd33640f
parente0f08ef22a20cf816904f0b60a05b9dbe40cb836 (diff)
downloadillumos-joyent-4966850cbd32c33aeed41ff4610b6ac82c195962.tar.gz
OS-7395 bhyve: VM_{SUSPEND,RESUME}_CPU ioctls ignore vcpu argument
Reviewed by: John Levon <john.levon@joyent.com> Reviewed by: Patrick Mooney <patrick.mooney@joyent.com> Approved by: John Levon <john.levon@joyent.com>
-rw-r--r--usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c b/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c
index 8185ca8ea5..2e92ff1624 100644
--- a/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c
+++ b/usr/src/uts/i86pc/io/vmm/vmm_sol_dev.c
@@ -969,10 +969,30 @@ vmmdev_do_ioctl(vmm_softc_t *sc, int cmd, intptr_t arg, int md,
case VM_ACTIVATE_CPU:
error = vm_activate_cpu(sc->vmm_vm, vcpu);
break;
+
case VM_SUSPEND_CPU:
+ if (ddi_copyin(datap, &vcpu, sizeof (vcpu), md)) {
+ error = EFAULT;
+ break;
+ }
+ if (vcpu < -1 || vcpu >= VM_MAXCPU) {
+ error = EINVAL;
+ break;
+ }
+
error = vm_suspend_cpu(sc->vmm_vm, vcpu);
break;
+
case VM_RESUME_CPU:
+ if (ddi_copyin(datap, &vcpu, sizeof (vcpu), md)) {
+ error = EFAULT;
+ break;
+ }
+ if (vcpu < -1 || vcpu >= VM_MAXCPU) {
+ error = EINVAL;
+ break;
+ }
+
error = vm_resume_cpu(sc->vmm_vm, vcpu);
break;