cpufreq: sched: Fix kernel crash on accessing sysfs file
authorViresh Kumar <viresh.kumar@linaro.org>
Tue, 15 Nov 2016 06:28:52 +0000 (11:58 +0530)
committerDmitry Shmidt <dimitrysh@google.com>
Wed, 16 Nov 2016 17:46:21 +0000 (09:46 -0800)
commit6dc8c51a76e57ae01fa087bdb5450423ce76a373
treeb240038525b4bcde4e7e567d9cb561cb5fca737e
parentab2bff9a8f87be3710edef3f2f17dee78962a6a1
cpufreq: sched: Fix kernel crash on accessing sysfs file

If the cpufreq driver hasn't set the CPUFREQ_HAVE_GOVERNOR_PER_POLICY
flag, then the kernel will crash on accessing sysfs files for the sched
governor.

CPUFreq governors we can have the governor specific sysfs files in two
places:

A. /sys/devices/system/cpu/cpuX/cpufreq/<governor>
B. /sys/devices/system/cpu/cpufreq/<governor>

The case A. is for governor per policy case, where we can control the
governor tunables for each policy separately. The case B. is for system
wide tunable values.

The schedfreq governor only implements the case A. and not B.  The sysfs
files in case B will still be present in
/sys/devices/system/cpu/cpufreq/<governor>, but accessing them will
crash kernel as the governor doesn't support that.

Moreover the sched governor is pretty new and will be used only for the
ARM platforms and there is no need to support the case B at all.

Hence use policy->kobj instead of get_governor_parent_kobj(), so that we
always create the sysfs files in path A.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
kernel/sched/cpufreq_sched.c