From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Carpenter Subject: re: kvm: irqchip: Break up high order allocations of kvm_irq_routing_table Date: Fri, 26 Jun 2015 12:00:22 +0300 Message-ID: <20150626090022.GA27118@mwanda> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm@vger.kernel.org To: jroedel@suse.de Return-path: Received: from userp1040.oracle.com ([156.151.31.81]:34081 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751983AbbFZJAf (ORCPT ); Fri, 26 Jun 2015 05:00:35 -0400 Content-Disposition: inline Sender: kvm-owner@vger.kernel.org List-ID: 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