Messages in this thread Patch in this message | | | Date | Sat, 11 Mar 2006 16:10:56 +0100 | From | Adrian Bunk <> | Subject | [2.6 patch] drivers/char/ipmi/ipmi_msghandler.c: fix a memory leak |
| |
The Coverity checker found this memory leak.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
drivers/char/ipmi/ipmi_msghandler.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
--- linux-2.6.16-rc5-mm3-full/drivers/char/ipmi/ipmi_msghandler.c.old 2006-03-11 14:22:49.000000000 +0100 +++ linux-2.6.16-rc5-mm3-full/drivers/char/ipmi/ipmi_msghandler.c 2006-03-11 14:25:03.000000000 +0100 @@ -736,7 +736,8 @@ int ipmi_create_user(unsigned int intf = ipmi_interfaces[if_num]; if ((if_num >= MAX_IPMI_INTERFACES) || IPMI_INVALID_INTERFACE(intf)) { spin_unlock_irqrestore(&interfaces_lock, flags); - return -EINVAL; + rv = -EINVAL; + goto out_kfree; } /* Note that each existing user holds a refcount to the interface. */ @@ -751,14 +752,14 @@ int ipmi_create_user(unsigned int if (!try_module_get(intf->handlers->owner)) { rv = -ENODEV; - goto out_err; + goto out_kref; } if (intf->handlers->inc_usecount) { rv = intf->handlers->inc_usecount(intf->send_info); if (rv) { module_put(intf->handlers->owner); - goto out_err; + goto out_kref; } } @@ -769,9 +770,10 @@ int ipmi_create_user(unsigned int *user = new_user; return 0; - out_err: - kfree(new_user); +out_kref: kref_put(&intf->refcount, intf_free); +out_kfree: + kfree(new_user); return rv; } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |