aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--virt/kvm/assigned-dev.c30
-rw-r--r--virt/kvm/kvm_main.c30
2 files changed, 30 insertions, 30 deletions
diff --git a/virt/kvm/assigned-dev.c b/virt/kvm/assigned-dev.c
index f4c7f591b5d8..8db43701016f 100644
--- a/virt/kvm/assigned-dev.c
+++ b/virt/kvm/assigned-dev.c
@@ -983,36 +983,6 @@ long kvm_vm_ioctl_assigned_device(struct kvm *kvm, unsigned ioctl,
983 goto out; 983 goto out;
984 break; 984 break;
985 } 985 }
986#ifdef KVM_CAP_IRQ_ROUTING
987 case KVM_SET_GSI_ROUTING: {
988 struct kvm_irq_routing routing;
989 struct kvm_irq_routing __user *urouting;
990 struct kvm_irq_routing_entry *entries;
991
992 r = -EFAULT;
993 if (copy_from_user(&routing, argp, sizeof(routing)))
994 goto out;
995 r = -EINVAL;
996 if (routing.nr >= KVM_MAX_IRQ_ROUTES)
997 goto out;
998 if (routing.flags)
999 goto out;
1000 r = -ENOMEM;
1001 entries = vmalloc(routing.nr * sizeof(*entries));
1002 if (!entries)
1003 goto out;
1004 r = -EFAULT;
1005 urouting = argp;
1006 if (copy_from_user(entries, urouting->entries,
1007 routing.nr * sizeof(*entries)))
1008 goto out_free_irq_routing;
1009 r = kvm_set_irq_routing(kvm, entries, routing.nr,
1010 routing.flags);
1011 out_free_irq_routing:
1012 vfree(entries);
1013 break;
1014 }
1015#endif /* KVM_CAP_IRQ_ROUTING */
1016#ifdef __KVM_HAVE_MSIX 986#ifdef __KVM_HAVE_MSIX
1017 case KVM_ASSIGN_SET_MSIX_NR: { 987 case KVM_ASSIGN_SET_MSIX_NR: {
1018 struct kvm_assigned_msix_nr entry_nr; 988 struct kvm_assigned_msix_nr entry_nr;
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 2c3b226bc13b..b6f33547b3db 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -2274,6 +2274,36 @@ static long kvm_vm_ioctl(struct file *filp,
2274 break; 2274 break;
2275 } 2275 }
2276#endif 2276#endif
2277#ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
2278 case KVM_SET_GSI_ROUTING: {
2279 struct kvm_irq_routing routing;
2280 struct kvm_irq_routing __user *urouting;
2281 struct kvm_irq_routing_entry *entries;
2282
2283 r = -EFAULT;
2284 if (copy_from_user(&routing, argp, sizeof(routing)))
2285 goto out;
2286 r = -EINVAL;
2287 if (routing.nr >= KVM_MAX_IRQ_ROUTES)
2288 goto out;
2289 if (routing.flags)
2290 goto out;
2291 r = -ENOMEM;
2292 entries = vmalloc(routing.nr * sizeof(*entries));
2293 if (!entries)
2294 goto out;
2295 r = -EFAULT;
2296 urouting = argp;
2297 if (copy_from_user(entries, urouting->entries,
2298 routing.nr * sizeof(*entries)))
2299 goto out_free_irq_routing;
2300 r = kvm_set_irq_routing(kvm, entries, routing.nr,
2301 routing.flags);
2302 out_free_irq_routing:
2303 vfree(entries);
2304 break;
2305 }
2306#endif /* CONFIG_HAVE_KVM_IRQ_ROUTING */
2277 default: 2307 default:
2278 r = kvm_arch_vm_ioctl(filp, ioctl, arg); 2308 r = kvm_arch_vm_ioctl(filp, ioctl, arg);
2279 if (r == -ENOTTY) 2309 if (r == -ENOTTY)