summaryrefslogtreecommitdiff
path: root/kvm.c
diff options
context:
space:
mode:
authorRobert Mustacchi <rm@joyent.com>2011-06-14 11:12:03 -0700
committerRobert Mustacchi <rm@joyent.com>2011-06-14 11:12:03 -0700
commit405ba1943a8a3f331b39c8ca59d2f0e9571dd56a (patch)
tree52d8a30b1d45b8e4f713a8032b88995604404bad /kvm.c
parentc7f8cae268f9864a7b21d9edf6f32bdd10b1075d (diff)
downloadillumos-kvm-405ba1943a8a3f331b39c8ca59d2f0e9571dd56a.tar.gz
HVM-368 Clean up KVM_SET_IDENTITY_MAP_ADDR ioctl
Diffstat (limited to 'kvm.c')
-rw-r--r--kvm.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/kvm.c b/kvm.c
index 47f7c62..4e54432 100644
--- a/kvm.c
+++ b/kvm.c
@@ -2184,28 +2184,20 @@ kvm_ioctl(dev_t dev, int cmd, intptr_t arg, int md, cred_t *cr, int *rv)
}
case KVM_SET_IDENTITY_MAP_ADDR: {
- kvm_id_map_addr_ioc_t *kvm_id_map_addr_ioc;
- size_t sz = sizeof (kvm_id_map_addr_ioc_t);
- struct kvm *kvmp;
-
- kvm_id_map_addr_ioc = kmem_zalloc(sz, KM_SLEEP);
+ uint64_t addr;
- if (copyin(argp, kvm_id_map_addr_ioc, sz) != 0) {
- kmem_free(kvm_id_map_addr_ioc, sz);
- rval = EFAULT;
+ if (ksp->kds_kvmp == NULL) {
+ rval = EINVAL;
break;
}
- if ((kvmp = ksp->kds_kvmp) == NULL) {
- kmem_free(kvm_id_map_addr_ioc, sz);
- rval = EINVAL;
+ if (copyin((void *)arg, &addr, sizeof (uint64_t)) != 0) {
+ rval = EFAULT;
break;
}
- rval = kvm_vm_ioctl_set_identity_map_addr(kvmp,
- kvm_id_map_addr_ioc->ident_addr);
+ rval = kvm_vm_ioctl_set_identity_map_addr(ksp->kds_kvmp, addr);
- kmem_free(kvm_id_map_addr_ioc, sz);
*rv = 0;
break;
}