Skip to content

Commit 3df85a1

Browse files
Heikki Krogerusrafaeljw
authored andcommitted
software node: Simplify software_node_release() function
It's possible to release the node ID immediately when fwnode_remove_software_node() is called, no need to wait for software_node_release() with that. Signed-off-by: Heikki Krogerus <[email protected]> Tested-by: Hans de Goede <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent a799698 commit 3df85a1

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

drivers/base/swnode.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -557,13 +557,6 @@ static void software_node_release(struct kobject *kobj)
557557
{
558558
struct software_node *swnode = kobj_to_swnode(kobj);
559559

560-
if (swnode->parent) {
561-
ida_simple_remove(&swnode->parent->child_ids, swnode->id);
562-
list_del(&swnode->entry);
563-
} else {
564-
ida_simple_remove(&swnode_root_ids, swnode->id);
565-
}
566-
567560
ida_destroy(&swnode->child_ids);
568561
property_entries_free(swnode->properties);
569562
kfree(swnode);
@@ -610,9 +603,6 @@ fwnode_create_software_node(const struct property_entry *properties,
610603
INIT_LIST_HEAD(&swnode->children);
611604
swnode->parent = p;
612605

613-
if (p)
614-
list_add_tail(&swnode->entry, &p->children);
615-
616606
ret = kobject_init_and_add(&swnode->kobj, &software_node_type,
617607
p ? &p->kobj : NULL, "node%d", swnode->id);
618608
if (ret) {
@@ -626,6 +616,9 @@ fwnode_create_software_node(const struct property_entry *properties,
626616
return ERR_PTR(ret);
627617
}
628618

619+
if (p)
620+
list_add_tail(&swnode->entry, &p->children);
621+
629622
kobject_uevent(&swnode->kobj, KOBJ_ADD);
630623
return &swnode->fwnode;
631624
}
@@ -638,6 +631,13 @@ void fwnode_remove_software_node(struct fwnode_handle *fwnode)
638631
if (!swnode)
639632
return;
640633

634+
if (swnode->parent) {
635+
ida_simple_remove(&swnode->parent->child_ids, swnode->id);
636+
list_del(&swnode->entry);
637+
} else {
638+
ida_simple_remove(&swnode_root_ids, swnode->id);
639+
}
640+
641641
kobject_put(&swnode->kobj);
642642
}
643643
EXPORT_SYMBOL_GPL(fwnode_remove_software_node);

0 commit comments

Comments
 (0)