Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c98d29a authored by Adrian Bunk's avatar Adrian Bunk Committed by Linus Torvalds
Browse files

[PATCH] drivers/char/ipmi/ipmi_msghandler.c: fix a memory leak



The Coverity checker found this memory leak.

Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
Acked-by: default avatarCorey Minyard <minyard@acm.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 7e317655
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -736,7 +736,8 @@ int ipmi_create_user(unsigned int if_num,
	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_num,

	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 if_num,
	*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;
}