]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
devres: remove unnecessary unlocks in devres_release_group()
authorDanilo Krummrich <dakr@kernel.org>
Mon, 2 Feb 2026 23:48:20 +0000 (00:48 +0100)
committerDanilo Krummrich <dakr@kernel.org>
Tue, 17 Mar 2026 22:58:39 +0000 (23:58 +0100)
There is no need to call spin_unlock_irqrestore() in every conditional
block, as release_nodes() can safely be called with an empty list, in
case we hit the "if else" or "else" case.

We do not use a scoped_guard() here to not unnecessarily change the
indentation level.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://patch.msgid.link/20260202235210.55176-8-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
drivers/base/devres.c

index dadc185251fb85a678103c8c1dd0598eb3ecd135..8fa54a3ed1204337021a46d5d8a22fd7d98aedb4 100644 (file)
@@ -712,7 +712,6 @@ int devres_release_group(struct device *dev, void *id)
        int cnt = 0;
 
        spin_lock_irqsave(&dev->devres_lock, flags);
-
        grp = find_group(dev, id);
        if (grp) {
                struct list_head *first = &grp->node[0].entry;
@@ -722,20 +721,18 @@ int devres_release_group(struct device *dev, void *id)
                        end = grp->node[1].entry.next;
 
                cnt = remove_nodes(dev, first, end, &todo);
-               spin_unlock_irqrestore(&dev->devres_lock, flags);
-
-               release_nodes(dev, &todo);
        } else if (list_empty(&dev->devres_head)) {
                /*
                 * dev is probably dying via devres_release_all(): groups
                 * have already been removed and are on the process of
                 * being released - don't touch and don't warn.
                 */
-               spin_unlock_irqrestore(&dev->devres_lock, flags);
        } else {
                WARN_ON(1);
-               spin_unlock_irqrestore(&dev->devres_lock, flags);
        }
+       spin_unlock_irqrestore(&dev->devres_lock, flags);
+
+       release_nodes(dev, &todo);
 
        return cnt;
 }