[PATCH] cpufreq: stats: do cpufreq_cpu_put() corresponding tocpufreq_cpu_get

From: Viresh Kumar
Date: Fri Mar 22 2013 - 05:45:48 EST


In cpufreq_stats_free_sysfs() we aren't balancing calls to cpufreq_cpu_get()
with cpufreq_cpu_put(). This will never let us have ref count to policy->kobj as
zero.

We will get a hang if somehow cpufreq_driver_unregister() is called. And that
can happen when we compile our driver as module and insmod/rmmod it.

Signed-off-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx>

--e89a8fb2017e1eccb904d88257af
Content-Type: application/octet-stream;
name="0001-cpufreq-stats-do-cpufreq_cpu_put-corresponding-to-cp.patch"
Content-Disposition: attachment;
filename="0001-cpufreq-stats-do-cpufreq_cpu_put-corresponding-to-cp.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_helb3n2b0

RnJvbSAwMzRlNWFjNGNjY2QwOTg3MjU5MmE0NmRlY2QzOGQ1ZjI0MDQ3ZjEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8MDM0ZTVhYzRjY2NkMDk4NzI1OTJhNDZkZWNkMzhk
NWYyNDA0N2YxMC4xMzYzOTU0MTI0LmdpdC52aXJlc2gua3VtYXJAbGluYXJvLm9yZz4KRnJvbTog
VmlyZXNoIEt1bWFyIDx2aXJlc2gua3VtYXJAbGluYXJvLm9yZz4KRGF0ZTogRnJpLCAyMiBNYXIg
MjAxMyAxNToxNTo0OCArMDUzMApTdWJqZWN0OiBbUEFUQ0hdIGNwdWZyZXE6IHN0YXRzOiBkbyBj
cHVmcmVxX2NwdV9wdXQoKSBjb3JyZXNwb25kaW5nIHRvCiBjcHVmcmVxX2NwdV9nZXQKCkluIGNw
dWZyZXFfc3RhdHNfZnJlZV9zeXNmcygpIHdlIGFyZW4ndCBiYWxhbmNpbmcgY2FsbHMgdG8gY3B1
ZnJlcV9jcHVfZ2V0KCkKd2l0aCBjcHVmcmVxX2NwdV9wdXQoKS4gVGhpcyB3aWxsIG5ldmVyIGxl
dCB1cyBoYXZlIHJlZiBjb3VudCB0byBwb2xpY3ktPmtvYmogYXMKemVyby4KCldlIHdpbGwgZ2V0
IGEgaGFuZyBpZiBzb21laG93IGNwdWZyZXFfZHJpdmVyX3VucmVnaXN0ZXIoKSBpcyBjYWxsZWQu
IEFuZCB0aGF0CmNhbiBoYXBwZW4gd2hlbiB3ZSBjb21waWxlIG91ciBkcml2ZXIgYXMgbW9kdWxl
IGFuZCBpbnNtb2Qvcm1tb2QgaXQuCgpTaWduZWQtb2ZmLWJ5OiBWaXJlc2ggS3VtYXIgPHZpcmVz
aC5rdW1hckBsaW5hcm8ub3JnPgotLS0KIGRyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxX3N0YXRzLmMg
fCAxMiArKysrKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jcHVmcmVxL2NwdWZyZXFfc3RhdHMuYyBi
L2RyaXZlcnMvY3B1ZnJlcS9jcHVmcmVxX3N0YXRzLmMKaW5kZXggMmZkNzc5ZS4uYmZkNjI3MyAx
MDA2NDQKLS0tIGEvZHJpdmVycy9jcHVmcmVxL2NwdWZyZXFfc3RhdHMuYworKysgYi9kcml2ZXJz
L2NwdWZyZXEvY3B1ZnJlcV9zdGF0cy5jCkBAIC0xODAsMTUgKzE4MCwxOSBAQCBzdGF0aWMgdm9p
ZCBjcHVmcmVxX3N0YXRzX2ZyZWVfc3lzZnModW5zaWduZWQgaW50IGNwdSkKIHsKIAlzdHJ1Y3Qg
Y3B1ZnJlcV9wb2xpY3kgKnBvbGljeSA9IGNwdWZyZXFfY3B1X2dldChjcHUpOwogCi0JaWYgKCFj
cHVmcmVxX2ZyZXF1ZW5jeV9nZXRfdGFibGUoY3B1KSkKKwlpZiAoIXBvbGljeSkKIAkJcmV0dXJu
OwogCi0JaWYgKHBvbGljeSAmJiAhcG9saWN5X2lzX3NoYXJlZChwb2xpY3kpKSB7CisJaWYgKCFj
cHVmcmVxX2ZyZXF1ZW5jeV9nZXRfdGFibGUoY3B1KSkKKwkJZ290byBwdXRfcmVmOworCisJaWYg
KCFwb2xpY3lfaXNfc2hhcmVkKHBvbGljeSkpIHsKIAkJcHJfZGVidWcoIiVzOiBGcmVlIHN5c2Zz
IHN0YXRcbiIsIF9fZnVuY19fKTsKIAkJc3lzZnNfcmVtb3ZlX2dyb3VwKCZwb2xpY3ktPmtvYmos
ICZzdGF0c19hdHRyX2dyb3VwKTsKIAl9Ci0JaWYgKHBvbGljeSkKLQkJY3B1ZnJlcV9jcHVfcHV0
KHBvbGljeSk7CisKK3B1dF9yZWY6CisJY3B1ZnJlcV9jcHVfcHV0KHBvbGljeSk7CiB9CiAKIHN0
YXRpYyBpbnQgY3B1ZnJlcV9zdGF0c19jcmVhdGVfdGFibGUoc3RydWN0IGNwdWZyZXFfcG9saWN5
ICpwb2xpY3ksCi0tIAoxLjcuMTIucmMyLjE4Lmc2MWI0NzJlCgo=
--e89a8fb2017e1eccb904d88257af--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/