[PATCH 2/4] software node: use kobject_get_unless_zero() in software_node_find_by_name()
From: Peng Fan (OSS)
Date: Wed Nov 04 2026 - 10:50:22 EST
From: Peng Fan <peng.fan@xxxxxxx>
software_node_find_by_name() also walks the swnode kset list and takes a
reference with swnode_get(). Like the pointer-based lookup, it can
encounter an entry whose refcount has already reached zero but which is
still linked until its delayed release callback runs.
Use kobject_get_unless_zero() and continue scanning when the entry is
already dying.
Fixes: 80488a6b1d3c ("software node: Add support for static node descriptors")
Signed-off-by: Peng Fan <peng.fan@xxxxxxx>
---
drivers/base/swnode.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c
index 19a4153f3fac1..9095d50ba146f 100644
--- a/drivers/base/swnode.c
+++ b/drivers/base/swnode.c
@@ -831,8 +831,8 @@ software_node_find_by_name(const struct software_node *parent, const char *name)
swnode = kobj_to_swnode(k);
if (parent == swnode->node->parent && swnode->node->name &&
!strcmp(name, swnode->node->name)) {
- swnode_get(swnode);
- break;
+ if (kobject_get_unless_zero(k))
+ break;
}
swnode = NULL;
}
--
2.34.1