greybus: connection: fix up error patch logic in gb_connection_create()

Once you have called device_initialize() you have to call put_device()
on the structure to clean it up on an error path, otherwise you will
leak memory.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
This commit is contained in:
Greg Kroah-Hartman 2014-10-29 09:57:08 +08:00
parent 4ccb6b7abb
commit 4b640bb135

View file

@ -169,9 +169,8 @@ struct gb_connection *gb_connection_create(struct gb_interface *interface,
}
hd = interface->gmod->hd;
connection->hd = hd; /* XXX refcount? */
connection->hd = hd;
if (!gb_connection_hd_cport_id_alloc(connection)) {
/* kref_put(connection->hd); */
gb_protocol_put(connection);
kfree(connection);
return NULL;
@ -193,9 +192,8 @@ struct gb_connection *gb_connection_create(struct gb_interface *interface,
retval = device_add(&connection->dev);
if (retval) {
gb_connection_hd_cport_id_free(connection);
/* kref_put(connection->hd); */
gb_protocol_put(connection);
kfree(connection);
put_device(&connection->dev);
return NULL;
}