firewire: cdev: remove unneeded idr_find() from complete_transaction()
Clemens Ladisch [Mon, 10 Jan 2011 16:28:27 +0000 (17:28 +0100)]
Outbound transactions are never aborted with release_client_resource(),
so it is not necessary for complete_transaction() to check whether the
resource is still registered.  Only shutdown_resource() can abort such
an transaction, and this is already handled with the in_shutdown check.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: "Stefan Richter" <stefanr@s5r6.in-berlin.de>

drivers/firewire/core-cdev.c

index 48ae712..4434f7c 100644 (file)
@@ -544,14 +544,8 @@ static void complete_transaction(struct fw_card *card, int rcode,
         * 1. If called while in shutdown, the idr tree must be left untouched.
         *    The idr handle will be removed and the client reference will be
         *    dropped later.
-        * 2. If the call chain was release_client_resource ->
-        *    release_transaction -> complete_transaction (instead of a normal
-        *    conclusion of the transaction), i.e. if this resource was already
-        *    unregistered from the idr, the client reference will be dropped
-        *    by release_client_resource and we must not drop it here.
         */
-       if (!client->in_shutdown &&
-           idr_find(&client->resource_idr, e->r.resource.handle)) {
+       if (!client->in_shutdown) {
                idr_remove(&client->resource_idr, e->r.resource.handle);
                /* Drop the idr's reference */
                client_put(client);