Messages in this thread | | | Subject | Re: [PATCH] sched: try to fix mm leak when freeing sched groups | From | Peter Zijlstra <> | Date | Thu, 21 Apr 2011 15:44:10 +0200 |
| |
On Thu, 2011-04-21 at 21:37 +0800, Hillf Danton wrote: > When freeing sched groups, there is a sg (== sched_group_nodes[i]) not > got freed. > The relevant code is reshuffled to be clearer, and correct.
The code doesn't even appear to exist, what kernel are you patching?
> Signed-off-by: Hillf Danton <dhillf@gmail.com> > --- > > --- a/kernel/sched.c 2011-03-30 03:09:48.000000000 +0800 > +++ b/kernel/sched.c 2011-04-21 21:09:00.000000000 +0800 > @@ -7106,7 +7106,7 @@ static void free_sched_groups(const stru > continue; > > for (i = 0; i < nr_node_ids; i++) { > - struct sched_group *oldsg, *sg = sched_group_nodes[i]; > + struct sched_group *sg = sched_group_nodes[i]; > > cpumask_and(nodemask, cpumask_of_node(i), cpu_map); > if (cpumask_empty(nodemask)) > @@ -7114,13 +7114,11 @@ static void free_sched_groups(const stru > > if (sg == NULL) > continue; > - sg = sg->next; > -next_sg: > - oldsg = sg; > - sg = sg->next; > - kfree(oldsg); > - if (oldsg != sched_group_nodes[i]) > - goto next_sg; > + do { > + struct sched_group *next = sg->next; > + kfree(sg); > + sg = next; > + } while (sg != sched_group_nodes[i]); > } > kfree(sched_group_nodes); > sched_group_nodes_bycpu[cpu] = NULL;
| |