diff --git a/kernel/proc/procgroup.c b/kernel/proc/procgroup.c index e96e619..4c91c61 100644 --- a/kernel/proc/procgroup.c +++ b/kernel/proc/procgroup.c @@ -216,16 +216,6 @@ static void procgroup_delete (struct procgroup* procgroup, struct reschedule_ctx rnode = next; - list_append (resource_delete_list, &resource->delete_list_link); - } - - struct list_node_link *resource_delete_link, *resource_delete_tmp_link; - list_foreach (resource_delete_list, resource_delete_link, resource_delete_tmp_link) { - struct proc_resource* resource = - list_entry (resource_delete_link, struct proc_resource, delete_list_link); - - list_remove (resource_delete_list, &resource->delete_list_link); - proc_delete_resource (procgroup, resource, rctx); } diff --git a/kernel/proc/resource.c b/kernel/proc/resource.c index 0855158..8433d29 100644 --- a/kernel/proc/resource.c +++ b/kernel/proc/resource.c @@ -103,6 +103,7 @@ void proc_delete_resource (struct procgroup* procgroup, struct proc_resource* re spin_lock (&resource->lock); id_free (&procgroup->rid_alloc, resource->rid); + rbtree_delete (&procgroup->resource_tree, &resource->resource_tree_link); spin_unlock (&resource->lock); spin_unlock (&procgroup->lock); diff --git a/kernel/proc/resource.h b/kernel/proc/resource.h index 9bc038d..857acd5 100644 --- a/kernel/proc/resource.h +++ b/kernel/proc/resource.h @@ -21,7 +21,6 @@ struct proc_resource { int rid; spin_lock_t lock; struct rb_node_link resource_tree_link; - struct list_node_link delete_list_link; union { struct proc_mutex mutex; struct proc_mail mail;