]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
firewire: core: minor code refactoring to release client resource
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Mon, 12 Aug 2024 23:52:06 +0000 (08:52 +0900)
committerTakashi Sakamoto <o-takashi@sakamocchi.jp>
Mon, 12 Aug 2024 23:52:06 +0000 (08:52 +0900)
Current implementation checks and validates the result to find resource
entry two times. It is redundant.

This commit refactors the redundancy.

Link: https://lore.kernel.org/r/20240812235210.28458-2-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
drivers/firewire/core-cdev.c

index c211bb19c94e83fef1c8e5eb03805825a5b5cbd0..81fdb2be9063a954fa334fb3e79fced82dfdb875 100644 (file)
@@ -512,15 +512,14 @@ static int release_client_resource(struct client *client, u32 handle,
 
        scoped_guard(spinlock_irq, &client->lock) {
                if (client->in_shutdown)
-                       resource = NULL;
-               else
-                       resource = idr_find(&client->resource_idr, handle);
-               if (resource && resource->release == release)
-                       idr_remove(&client->resource_idr, handle);
-       }
+                       return -EINVAL;
 
-       if (!(resource && resource->release == release))
-               return -EINVAL;
+               resource = idr_find(&client->resource_idr, handle);
+               if (!resource || resource->release != release)
+                       return -EINVAL;
+
+               idr_remove(&client->resource_idr, handle);
+       }
 
        if (return_resource)
                *return_resource = resource;