Commit deb58ca8 authored by Alex Elder's avatar Alex Elder Committed by Greg Kroah-Hartman

greybus: connection: drop unneeded gb_protocol_put() calls

Although a connection records its protocol id when it gets
created, its protocol handler doesn't actually get assigned
until gb_connection_bind_protocol() is called.

In gb_connection_create() there are some error paths in
which a reference to the connection's protocol is released
before the protocol handler has been associated with the
connection.

Get rid of those calls.

As a result, we will never pass a null protocol pointer to
gb_protocol_put().  Add a precautionary warning in that
function in the event that ever occurs.
Signed-off-by: default avatarAlex Elder <elder@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 856618f3
......@@ -195,7 +195,6 @@ struct gb_connection *gb_connection_create(struct gb_bundle *bundle,
connection->major = major;
connection->minor = minor;
if (!gb_connection_hd_cport_id_alloc(connection)) {
gb_protocol_put(connection->protocol);
kfree(connection);
return NULL;
}
......@@ -217,7 +216,6 @@ struct gb_connection *gb_connection_create(struct gb_bundle *bundle,
pr_err("failed to add connection device for cport 0x%04hx\n",
cport_id);
gb_connection_hd_cport_id_free(connection);
gb_protocol_put(connection->protocol);
put_device(&connection->dev);
return NULL;
......@@ -264,6 +262,7 @@ void gb_connection_destroy(struct gb_connection *connection)
gb_connection_hd_cport_id_free(connection);
gb_protocol_put(connection->protocol);
connection->protocol = NULL;
device_unregister(&connection->dev);
}
......
......@@ -196,7 +196,7 @@ void gb_protocol_put(struct gb_protocol *protocol)
u8 minor;
u8 protocol_count;
if (!protocol)
if (WARN_ON(!protocol))
return;
id = protocol->id;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment