From: Andy Bavier Date: Thu, 24 Feb 2005 14:34:07 +0000 (+0000) Subject: Remove freed class from any classqueues [PL #4233] X-Git-Tag: planetlab-3_0-rc13~20 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=17838e7922858fd31e92a0c03d723952c49d31ee;p=linux-2.6.git Remove freed class from any classqueues [PL #4233] --- diff --git a/kernel/ckrm/ckrm_cpu_class.c b/kernel/ckrm/ckrm_cpu_class.c index 917875b18..e6ba36622 100644 --- a/kernel/ckrm/ckrm_cpu_class.c +++ b/kernel/ckrm/ckrm_cpu_class.c @@ -145,6 +145,8 @@ static void ckrm_free_cpu_class(void *my_res) struct ckrm_cpu_class *cls = my_res, *parres, *childres; ckrm_core_class_t *child = NULL; int maxlimit; + ckrm_lrq_t* queue; + int i; if (!cls) return; @@ -152,6 +154,15 @@ static void ckrm_free_cpu_class(void *my_res) /*the default class can't be freed*/ if (cls == get_default_cpu_class()) return; +#if 1 +#warning "ACB: Remove freed class from any classqueues [PL #4233]" + for (i = 0 ; i < NR_CPUS ; i++) { + queue = &cls->local_queues[i]; + if (cls_in_classqueue(&queue->classqueue_linkobj)) + classqueue_dequeue(queue->classqueue, + &queue->classqueue_linkobj); + } +#endif // Assuming there will be no children when this function is called parres = ckrm_get_cpu_class(cls->parent);