diff options
Diffstat (limited to 'drivers/base/swnode.c')
| -rw-r--r-- | drivers/base/swnode.c | 14 | 
1 files changed, 7 insertions, 7 deletions
| diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c index 0b081dee1e95..de8d3543e8fe 100644 --- a/drivers/base/swnode.c +++ b/drivers/base/swnode.c @@ -608,6 +608,13 @@ static void software_node_release(struct kobject *kobj)  {  	struct swnode *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); +	} +  	if (swnode->allocated) {  		property_entries_free(swnode->node->properties);  		kfree(swnode->node); @@ -773,13 +780,6 @@ 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); |