diff options
-rw-r--r-- | kvm.c | 19 | ||||
-rw-r--r-- | kvm.h | 8 |
2 files changed, 8 insertions, 19 deletions
@@ -14097,45 +14097,38 @@ kvm_ioctl(dev_t dev, int cmd, intptr_t arg, int md, cred_t *cr, int *rv) #endif /* KVM_CAP_IRQ_ROUTING */ case KVM_IRQ_LINE_STATUS: case KVM_IRQ_LINE: { - struct kvm_irq_level_ioc *irq_event_ioc; + struct kvm_irq_level level; struct kvm *kvmp; - size_t sz = sizeof (struct kvm_irq_level_ioc); + size_t sz = sizeof (struct kvm_irq_level); int32_t status; - irq_event_ioc = kmem_zalloc(sz, KM_SLEEP); - - if (copyin(argp, irq_event_ioc, sz) != 0) { - kmem_free(irq_event_ioc, sz); + if (copyin(argp, &level, sz) != 0) { rval = EFAULT; break; } if ((kvmp = ksp->kds_kvmp) == NULL) { - kmem_free(irq_event_ioc, sz); rval = EINVAL; break; } if (!irqchip_in_kernel(kvmp)) { - kmem_free(irq_event_ioc, sz); rval = ENXIO; break; } status = kvm_set_irq(kvmp, KVM_USERSPACE_IRQ_SOURCE_ID, - irq_event_ioc->event.irq, irq_event_ioc->event.level); + level.irq, level.level); if (cmd == KVM_IRQ_LINE_STATUS) { - irq_event_ioc->event.status = status; + level.status = status; - if (copyout(irq_event_ioc, argp, sz) != 0) { - kmem_free(irq_event_ioc, sz); + if (copyout(&level, argp, sz) != 0) { rval = EFAULT; break; } } - kmem_free(irq_event_ioc, sz); break; } @@ -1583,10 +1583,6 @@ typedef struct kvm_irq_level { uint32_t level; } kvm_irq_level_t; -typedef struct kvm_irq_level_ioc { - struct kvm_irq_level event; -} kvm_irq_level_ioc_t; - /* * for KVM_SET_IDENTITY_MAP_ADDR */ @@ -1618,8 +1614,8 @@ typedef struct kvm_id_map_addr_ioc { #define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, struct kvm_id_map_addr_ioc) /* Device model IOC */ #define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60) -#define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level_ioc) -#define KVM_IRQ_LINE_STATUS _IOWR(KVMIO, 0x67, struct kvm_irq_level_ioc) +#define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level) +#define KVM_IRQ_LINE_STATUS _IOWR(KVMIO, 0x67, struct kvm_irq_level) #define KVM_GET_IRQCHIP _IOWR(KVMIO, 0x62, struct kvm_irqchip) #define KVM_SET_IRQCHIP _IOR(KVMIO, 0x63, struct kvm_irqchip) |