• F
    cpufreq: ondemand: update sampling rate only on right CPUs · 3e33ee9e
    Fabio Baltieri 提交于
    Fix cpufreq_gov_ondemand to skip CPU where another governor is used.
    
    The bug present itself as NULL pointer access on the mutex_lock() call,
    an can be reproduced on an SMP machine by setting the default governor
    to anything other than ondemand, setting a single CPU's governor to
    ondemand, then changing the sample rate by writing on:
    
    > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
    
    Backtrace:
    
    Nov 26 17:36:54 balto kernel: [  839.585241] BUG: unable to handle kernel NULL pointer dereference at           (null)
    Nov 26 17:36:54 balto kernel: [  839.585311] IP: [<ffffffff8174e082>] __mutex_lock_slowpath+0xb2/0x170
    [snip]
    Nov 26 17:36:54 balto kernel: [  839.587005] Call Trace:
    Nov 26 17:36:54 balto kernel: [  839.587030]  [<ffffffff8174da82>] mutex_lock+0x22/0x40
    Nov 26 17:36:54 balto kernel: [  839.587067]  [<ffffffff81610b8f>] store_sampling_rate+0xbf/0x150
    Nov 26 17:36:54 balto kernel: [  839.587110]  [<ffffffff81031e9c>] ?  __do_page_fault+0x1cc/0x4c0
    Nov 26 17:36:54 balto kernel: [  839.587153]  [<ffffffff813309bf>] kobj_attr_store+0xf/0x20
    Nov 26 17:36:54 balto kernel: [  839.587192]  [<ffffffff811bb62d>] sysfs_write_file+0xcd/0x140
    Nov 26 17:36:54 balto kernel: [  839.587234]  [<ffffffff8114c12c>] vfs_write+0xac/0x180
    Nov 26 17:36:54 balto kernel: [  839.587271]  [<ffffffff8114c472>] sys_write+0x52/0xa0
    Nov 26 17:36:54 balto kernel: [  839.587306]  [<ffffffff810321ce>] ?  do_page_fault+0xe/0x10
    Nov 26 17:36:54 balto kernel: [  839.587345]  [<ffffffff81751202>] system_call_fastpath+0x16/0x1b
    Signed-off-by: NFabio Baltieri <fabio.baltieri@linaro.org>
    Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
    3e33ee9e
cpufreq_ondemand.c 15.2 KB