Message ID | 1438881190-27287-1-git-send-email-xerofoify@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On 06/08/2015 19:13, Nicholas Krause wrote: > diff --git a/arch/powerpc/kvm/mpic.c b/arch/powerpc/kvm/mpic.c > index 6249cdc..5a18859 100644 > --- a/arch/powerpc/kvm/mpic.c > +++ b/arch/powerpc/kvm/mpic.c > @@ -1641,13 +1641,16 @@ static void mpic_destroy(struct kvm_device *dev) > static int mpic_set_default_irq_routing(struct openpic *opp) > { > struct kvm_irq_routing_entry *routing; > + int ret; > > /* Create a nop default map, so that dereferencing it still works */ > routing = kzalloc((sizeof(*routing)), GFP_KERNEL); > if (!routing) > return -ENOMEM; > > - kvm_set_irq_routing(opp->kvm, routing, 0, 0); > + ret = kvm_set_irq_routing(opp->kvm, routing, 0, 0); > + if (ret) > + return ret; > > kfree(routing); > return 0; The patch leaks the "routing" variable if you hit the error path. Paolo
diff --git a/arch/powerpc/kvm/mpic.c b/arch/powerpc/kvm/mpic.c index 6249cdc..5a18859 100644 --- a/arch/powerpc/kvm/mpic.c +++ b/arch/powerpc/kvm/mpic.c @@ -1641,13 +1641,16 @@ static void mpic_destroy(struct kvm_device *dev) static int mpic_set_default_irq_routing(struct openpic *opp) { struct kvm_irq_routing_entry *routing; + int ret; /* Create a nop default map, so that dereferencing it still works */ routing = kzalloc((sizeof(*routing)), GFP_KERNEL); if (!routing) return -ENOMEM; - kvm_set_irq_routing(opp->kvm, routing, 0, 0); + ret = kvm_set_irq_routing(opp->kvm, routing, 0, 0); + if (ret) + return ret; kfree(routing); return 0;
This fixes error handling in the function mpic_set_default_irq_routing by checking if the call to the function kvm_set_irq_routing has failed and if so exit immediately to the caller by returning the error code returned by the call to mpic_set_default_irq_routing. Signed-off-by: Nicholas Krause <xerofoify@gmail.com> --- arch/powerpc/kvm/mpic.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)