• Geert Uytterhoeven's avatar
    cpufreq: Avoid crash in resume on SMP without OPP · 09712f55
    Geert Uytterhoeven authored
    When resuming from s2ram on an SMP system without cpufreq operating
    points (e.g. there's no "operating-points" property for the CPU node in
    DT, or the platform doesn't use DT yet), the kernel crashes when
    bringing CPU 1 online:
    
        Enabling non-boot CPUs ...
        CPU1: Booted secondary processor
        Unable to handle kernel NULL pointer dereference at virtual address 0000003c
        pgd = ee5e6b00
        [0000003c] *pgd=6e579003, *pmd=6e588003, *pte=00000000
        Internal error: Oops: a07 [#1] SMP ARM
        Modules linked in:
        CPU: 0 PID: 1246 Comm: s2ram Tainted: G        W      3.18.0-rc3-koelsch-01614-g0377af242bb175c8-dirty #589
        task: eeec5240 ti: ee704000 task.ti: ee704000
        PC is at __cpufreq_add_dev.isra.24+0x24c/0x77c
        LR is at __cpufreq_add_dev.isra.24+0x244/0x77c
        pc : [<c0298efc>]    lr : [<c0298ef4>]    psr: 60000153
        sp : ee705d48  ip : ee705d48  fp : ee705d84
        r10: c04e0450  r9 : 00000000  r8 : 00000001
        r7 : c05426a8  r6 : 00000001  r5 : 00000001  r4 : 00000000
        r3 : 00000000  r2 : 00000000  r1 : 20000153  r0 : c0542734
    
    Verify that policy is not NULL before dereferencing it to fix this.
    Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Fixes: 8414809c (cpufreq: Preserve policy structure across suspend/resume)
    Cc: 3.12+ <stable@vger.kernel.org> # 3.12+
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    09712f55
cpufreq.c 65 KB