summaryrefslogtreecommitdiff
path: root/kernel/trace/trace_functions_graph.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2015-05-11 16:05:09 +0200
committerIngo Molnar <mingo@kernel.org>2015-05-11 16:05:09 +0200
commit191a66353b22fad8ac89404ab4c929cbe7b0afb2 (patch)
treebd7affc4bc640eb42e5ff3285922497285f8fdd7 /kernel/trace/trace_functions_graph.c
parentf5d6a52f511157c7476590532a23b5664b1ed877 (diff)
parentf21262b8e092a770e39fbd405cc18a0247c3af68 (diff)
downloadlwn-191a66353b22fad8ac89404ab4c929cbe7b0afb2.tar.gz
lwn-191a66353b22fad8ac89404ab4c929cbe7b0afb2.zip
Merge branch 'x86/asm' into x86/apic, to resolve a conflict
Conflicts: arch/x86/kernel/apic/io_apic.c arch/x86/kernel/apic/vector.c Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel/trace/trace_functions_graph.c')
-rw-r--r--kernel/trace/trace_functions_graph.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/trace/trace_functions_graph.c b/kernel/trace/trace_functions_graph.c
index 9cfea4c6d314..a51e79688455 100644
--- a/kernel/trace/trace_functions_graph.c
+++ b/kernel/trace/trace_functions_graph.c
@@ -1308,15 +1308,19 @@ void graph_trace_open(struct trace_iterator *iter)
{
/* pid and depth on the last trace processed */
struct fgraph_data *data;
+ gfp_t gfpflags;
int cpu;
iter->private = NULL;
- data = kzalloc(sizeof(*data), GFP_KERNEL);
+ /* We can be called in atomic context via ftrace_dump() */
+ gfpflags = (in_atomic() || irqs_disabled()) ? GFP_ATOMIC : GFP_KERNEL;
+
+ data = kzalloc(sizeof(*data), gfpflags);
if (!data)
goto out_err;
- data->cpu_data = alloc_percpu(struct fgraph_cpu_data);
+ data->cpu_data = alloc_percpu_gfp(struct fgraph_cpu_data, gfpflags);
if (!data->cpu_data)
goto out_err_free;