Fix not removing resource from procgroup->resource_tree during pg cleanup
This commit is contained in:
@@ -216,16 +216,6 @@ static void procgroup_delete (struct procgroup* procgroup, struct reschedule_ctx
|
|||||||
|
|
||||||
rnode = next;
|
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);
|
proc_delete_resource (procgroup, resource, rctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ void proc_delete_resource (struct procgroup* procgroup, struct proc_resource* re
|
|||||||
spin_lock (&resource->lock);
|
spin_lock (&resource->lock);
|
||||||
|
|
||||||
id_free (&procgroup->rid_alloc, resource->rid);
|
id_free (&procgroup->rid_alloc, resource->rid);
|
||||||
|
rbtree_delete (&procgroup->resource_tree, &resource->resource_tree_link);
|
||||||
|
|
||||||
spin_unlock (&resource->lock);
|
spin_unlock (&resource->lock);
|
||||||
spin_unlock (&procgroup->lock);
|
spin_unlock (&procgroup->lock);
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ struct proc_resource {
|
|||||||
int rid;
|
int rid;
|
||||||
spin_lock_t lock;
|
spin_lock_t lock;
|
||||||
struct rb_node_link resource_tree_link;
|
struct rb_node_link resource_tree_link;
|
||||||
struct list_node_link delete_list_link;
|
|
||||||
union {
|
union {
|
||||||
struct proc_mutex mutex;
|
struct proc_mutex mutex;
|
||||||
struct proc_mail mail;
|
struct proc_mail mail;
|
||||||
|
|||||||
Reference in New Issue
Block a user