forked from Minki/linux
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 <heikki.krogerus@linux.intel.com> Tested-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
a79969868a
commit
3df85a1ae5
@ -557,13 +557,6 @@ static void software_node_release(struct kobject *kobj)
|
||||
{
|
||||
struct software_node *swnode = kobj_to_swnode(kobj);
|
||||
|
||||
if (swnode->parent) {
|
||||
ida_simple_remove(&swnode->parent->child_ids, swnode->id);
|
||||
list_del(&swnode->entry);
|
||||
} else {
|
||||
ida_simple_remove(&swnode_root_ids, swnode->id);
|
||||
}
|
||||
|
||||
ida_destroy(&swnode->child_ids);
|
||||
property_entries_free(swnode->properties);
|
||||
kfree(swnode);
|
||||
@ -610,9 +603,6 @@ fwnode_create_software_node(const struct property_entry *properties,
|
||||
INIT_LIST_HEAD(&swnode->children);
|
||||
swnode->parent = p;
|
||||
|
||||
if (p)
|
||||
list_add_tail(&swnode->entry, &p->children);
|
||||
|
||||
ret = kobject_init_and_add(&swnode->kobj, &software_node_type,
|
||||
p ? &p->kobj : NULL, "node%d", swnode->id);
|
||||
if (ret) {
|
||||
@ -626,6 +616,9 @@ fwnode_create_software_node(const struct property_entry *properties,
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
if (p)
|
||||
list_add_tail(&swnode->entry, &p->children);
|
||||
|
||||
kobject_uevent(&swnode->kobj, KOBJ_ADD);
|
||||
return &swnode->fwnode;
|
||||
}
|
||||
@ -638,6 +631,13 @@ void fwnode_remove_software_node(struct fwnode_handle *fwnode)
|
||||
if (!swnode)
|
||||
return;
|
||||
|
||||
if (swnode->parent) {
|
||||
ida_simple_remove(&swnode->parent->child_ids, swnode->id);
|
||||
list_del(&swnode->entry);
|
||||
} else {
|
||||
ida_simple_remove(&swnode_root_ids, swnode->id);
|
||||
}
|
||||
|
||||
kobject_put(&swnode->kobj);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(fwnode_remove_software_node);
|
||||
|
Loading…
Reference in New Issue
Block a user