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:
parent
4ccb6b7abb
commit
4b640bb135
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user