re: kvm: irqchip: Break up high order allocations of kvm_irq_routing_table

Dan Carpenter
2015-06-26T09:00:35Z

Hello Joerg Roedel,

The patch e73f61e41f3b: "kvm: irqchip: Break up high order
allocations of kvm_irq_routing_table" from May 8, 2015, leads to the
following static checker warning:

arch/x86/kvm/../../../virt/kvm/irqchip.c:238 kvm_set_irq_routing()
warn: possible memory leak of 'e'

arch/x86/kvm/../../../virt/kvm/irqchip.c
207 for (i = 0; i < nr; ++i) {
208 struct kvm_kernel_irq_routing_entry *e;
209
210 r = -ENOMEM;
211 e = kzalloc(sizeof(*e), GFP_KERNEL);
212 if (!e)
213 goto out;
214
215 r = -EINVAL;
216 if (ue->flags)
217 goto out;
^^^^^^^^
Leaked here. Move in front of the allocation?

218 r = setup_routing_entry(new, e, ue);
219 if (r)
220 goto out;
221 ++ue;
222 }
223
224 mutex_lock(&kvm->irq_lock);
225 old = kvm->irq_routing;
226 rcu_assign_pointer(kvm->irq_routing, new);
227 kvm_irq_routing_update(kvm);
228 mutex_unlock(&kvm->irq_lock);
229
230 synchronize_srcu_expedited(&kvm->irq_srcu);
231
232 new = old;
233 r = 0;
234
235 out:
236 free_irq_routing_table(new);
237
238 return r;
239 }

regards,
dan carpenter