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>
diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c
index dac47b3..c4b6505 100644
--- a/drivers/staging/greybus/connection.c
+++ b/drivers/staging/greybus/connection.c
@@ -169,9 +169,8 @@
}
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 @@
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;
}