projects
/
firefly-linux-kernel-4.4.55.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
7ae573c
)
cpufreq: fix sleeping in atomic context when realloc freq_table for all_time_in_state
author
Minsung Kim
<ms925.kim@samsung.com>
Wed, 25 Jun 2014 10:44:50 +0000
(19:44 +0900)
committer
Ruchi Kandoi
<kandoiruchi@google.com>
Fri, 27 Jun 2014 21:02:58 +0000
(21:02 +0000)
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>
drivers/cpufreq/cpufreq_stats.c
patch
|
blob
|
history
diff --git
a/drivers/cpufreq/cpufreq_stats.c
b/drivers/cpufreq/cpufreq_stats.c
index 3f5e279ff9d8d6a8a9e43963bb5b9c2da8f16d4d..7a2bcac3ad7f48e97f47688b6aba0f51aa5f67bc 100644
(file)
--- a/
drivers/cpufreq/cpufreq_stats.c
+++ b/
drivers/cpufreq/cpufreq_stats.c
@@
-424,7
+424,7
@@
static void add_all_freq_table(unsigned int freq)
unsigned int size;
size = sizeof(unsigned int) * (all_freq_table->table_size + 1);
all_freq_table->freq_table = krealloc(all_freq_table->freq_table,
- size, GFP_
KERNEL
);
+ size, GFP_
ATOMIC
);
if (IS_ERR(all_freq_table->freq_table)) {
pr_warn("Could not reallocate memory for freq_table\n");
all_freq_table->freq_table = NULL;