cpufreq: fix sleeping in atomic context when realloc freq_table for all_time_in_state
Commit
40cf2f8 (cpufreq: Persist cpufreq time in state data across hotplug)
causes the following call trace to be spit on boot:
BUG: sleeping function called from invalid context at mm/slub.c:936
in_atomic(): 1, irqs_disabled(): 0, pid: 1, name: swapper/0
CPU: 6 PID: 1 Comm: swapper/0 Not tainted
3.10.9-20140624.172707-eng-gd6c0f69-dirty #50
Backtrace:
[<
c0012270>] (dump_backtrace+0x0/0x10c) from [<
c001256c>] (show_stack+0x18/0x1c)
r6:
ffff1788 r5:
c0c020c0 r4:
e609c000 r3:
00000000
[<
c0012554>] (show_stack+0x0/0x1c) from [<
c07a2970>] (dump_stack+0x20/0x28)
[<
c07a2950>] (dump_stack+0x0/0x28) from [<
c0057678>] (__might_sleep+0x104/0x120)
[<
c0057574>] (__might_sleep+0x0/0x120) from [<
c00ff000>] (__kmalloc_track_caller+0x144/0x274)
r6:
00000000 r5:
e609c000 r4:
e6802140
[<
c00feebc>] (__kmalloc_track_caller+0x0/0x274) from [<
c00da098>] (krealloc+0x58/0xb0)
[<
c00da040>] (krealloc+0x0/0xb0) from [<
c050266c>] (cpufreq_allstats_create+0x120/0x204)
r8:
e4c4ff00 r7:
c0d266b8 r6:
0013d620 r5:
e4c4e600 r4:
00000001
r3:
e535d6d0
[<
c050254c>] (cpufreq_allstats_create+0x0/0x204) from [<
c0502e38>] (cpufreq_stat_notifier_policy+0xb8/0xd0)
[<
c0502d80>] (cpufreq_stat_notifier_policy+0x0/0xd0) from [<
c00517cc>] (notifier_call_chain+0x4c/0x8c)
r5:
00000000 r4:
fffffffe
[<
c0051780>] (notifier_call_chain+0x0/0x8c) from [<
c00519fc>] (__blocking_notifier_call_chain+0x50/0x68)
r8:
c0cd4d00 r7:
00000002 r6:
e609dd7c r5:
ffffffff r4:
c0d25a4c
r3:
ffffffff
[<
c00519ac>] (__blocking_notifier_call_chain+0x0/0x68) from [<
c0051a34>] (blocking_notifier_call_chain+0x20/0x28)
r7:
c0e24f30 r6:
00000000 r5:
e53e1e00 r4:
e609dd7c
[<
c0051a14>] (blocking_notifier_call_chain+0x0/0x28) from [<
c0500fec>] (__cpufreq_set_policy+0xc0/0x1d0)
[<
c0500f2c>] (__cpufreq_set_policy+0x0/0x1d0) from [<
c0501308>] (cpufreq_add_dev_interface+0x20c/0x270)
r7:
00000008 r6:
00000000 r5:
e53e1e00 r4:
e53e1e58
[<
c05010fc>] (cpufreq_add_dev_interface+0x0/0x270) from [<
c05016a8>] (cpufreq_add_dev+0x33c/0x420)
[<
c050136c>] (cpufreq_add_dev+0x0/0x420) from [<
c03604a4>] (subsys_interface_register+0x80/0xbc)
[<
c0360424>] (subsys_interface_register+0x0/0xbc) from [<
c050035c>] (cpufreq_register_driver+0x8c/0x194)
Change-Id: If77a656d0ea60a8fc4083283d104509fa6c07f8f
Signed-off-by: Minsung Kim <ms925.kim@samsung.com>