summaryrefslogtreecommitdiff
path: root/drivers/base
diff options
context:
space:
mode:
authorDanilo Krummrich <dakr@kernel.org>2026-02-03 00:48:20 +0100
committerDanilo Krummrich <dakr@kernel.org>2026-03-17 23:58:39 +0100
commitc321a511e37c3aaa16226b3529c30b78f9e380c1 (patch)
treed44a0481359606016e60f523edc3fc64680ae6d7 /drivers/base
parente19f3fed3c4cd523dffa87f3c2d6837aff538543 (diff)
devres: remove unnecessary unlocks in devres_release_group()
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>
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/devres.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/base/devres.c b/drivers/base/devres.c
index dadc185251fb..8fa54a3ed120 100644
--- a/drivers/base/devres.c
+++ b/drivers/base/devres.c
@@ -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;
}