mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
cpufreq: fix null object access on Transmeta CPU
If cpu specific cpufreq driver(i.e. longrun) has "setpolicy" function, governor object isn't set into cpufreq_policy object at "__cpufreq_set_policy" function in driver/cpufreq/cpufreq.c . This causes a null object access at "store_scaling_setspeed" and "show_scaling_setspeed" function in driver/cpufreq/cpufreq.c when reading or writing through /sys interface (ex. cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed) Addresses: http://bugzilla.kernel.org/show_bug.cgi?id=10654 https://bugzilla.redhat.com/show_bug.cgi?id=443354 Signed-off-by: CHIKAMA Masaki <masaki.chikama@gmail.com> Cc: Dave Jones <davej@codemonkey.org.uk> Cc: Chuck Ebbert <cebbert@redhat.com> Acked-by: Dominik Brodowski <linux@dominikbrodowski.net> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
10732c35df
commit
879000f944
@ -625,7 +625,7 @@ static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy,
|
|||||||
unsigned int freq = 0;
|
unsigned int freq = 0;
|
||||||
unsigned int ret;
|
unsigned int ret;
|
||||||
|
|
||||||
if (!policy->governor->store_setspeed)
|
if (!policy->governor || !policy->governor->store_setspeed)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ret = sscanf(buf, "%u", &freq);
|
ret = sscanf(buf, "%u", &freq);
|
||||||
@ -639,7 +639,7 @@ static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy,
|
|||||||
|
|
||||||
static ssize_t show_scaling_setspeed(struct cpufreq_policy *policy, char *buf)
|
static ssize_t show_scaling_setspeed(struct cpufreq_policy *policy, char *buf)
|
||||||
{
|
{
|
||||||
if (!policy->governor->show_setspeed)
|
if (!policy->governor || !policy->governor->show_setspeed)
|
||||||
return sprintf(buf, "<unsupported>\n");
|
return sprintf(buf, "<unsupported>\n");
|
||||||
|
|
||||||
return policy->governor->show_setspeed(policy, buf);
|
return policy->governor->show_setspeed(policy, buf);
|
||||||
|
Loading…
Reference in New Issue
Block a user