kvm: irqchip: fix memory leak
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>
Wed, 2 Sep 2015 07:03:53 +0000 (12:33 +0530)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 8 Sep 2015 09:16:41 +0000 (11:16 +0200)
We were taking the exit path after checking ue->flags and return value
of setup_routing_entry(), but 'e' was not freed incase of a failure.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
virt/kvm/irqchip.c

index 21c1424..d7ea8e2 100644 (file)
@@ -213,11 +213,15 @@ int kvm_set_irq_routing(struct kvm *kvm,
                        goto out;
 
                r = -EINVAL;
-               if (ue->flags)
+               if (ue->flags) {
+                       kfree(e);
                        goto out;
+               }
                r = setup_routing_entry(new, e, ue);
-               if (r)
+               if (r) {
+                       kfree(e);
                        goto out;
+               }
                ++ue;
        }