diff options
author | Sudip Mukherjee <sudipm.mukherjee@gmail.com> | 2015-09-02 09:03:53 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-09-08 11:16:41 +0200 |
commit | ba60c41ae392b473a1897faa0b8739fcb8759d69 (patch) | |
tree | fb8a2bf4cde5d8de4ca4cf3781e7659d002a91c9 /virt/kvm/irqchip.c | |
parent | kvm: move new trace event outside #ifdef CONFIG_KVM_ASYNC_PF (diff) | |
download | linux-ba60c41ae392b473a1897faa0b8739fcb8759d69.tar.xz linux-ba60c41ae392b473a1897faa0b8739fcb8759d69.zip |
kvm: irqchip: fix memory leak
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>
Diffstat (limited to 'virt/kvm/irqchip.c')
-rw-r--r-- | virt/kvm/irqchip.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/virt/kvm/irqchip.c b/virt/kvm/irqchip.c index 21c14244f4c4..d7ea8e20dae4 100644 --- a/virt/kvm/irqchip.c +++ b/virt/kvm/irqchip.c @@ -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; } |