On 01/04/2013 10:49 AM, Viresh Kumar wrote: > On 3 January 2013 19:55, Srivatsa S. Bhat > <srivatsa.bhat@xxxxxxxxxxxxxxxxxx> wrote: >> I took a quick look at the problem you described above, and the cpufreq code.. >> If we cannot avoid calling cpufreq_add_dev() from cpufreq_remove_dev(), then I can't >> think of anything better than what your patch does. > > Good :) > >> BTW, off-topic, while going through that path, I think I found a memory leak >> in __cpufreq_remove_dev(): >> >> if (unlikely(cpumask_weight(data->cpus) > 1)) { >> for_each_cpu(j, data->cpus) { >> if (j == cpu) >> continue; >> per_cpu(cpufreq_cpu_data, j) = NULL; >> } >> } >> >> We are assigning NULL without freeing that memory. > > Not really. All cpus in affected_cpus (data->cpus), share the same > policy structure. > We have already taken backup of cpufreq_cpu_data for the first cpu in "data" and > are freeing it here: > > kfree(data); > Ah, ok, got it. Thanks! Regards, Srivatsa S. Bhat -- To unsubscribe from this list: send the line "unsubscribe cpufreq" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html