diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-08-14 23:58:37 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-08-14 23:58:37 +0900 |
commit | 0fc11e3618bb1f9e0640127ec84f5d2690fa3894 (patch) | |
tree | 574050acc37269c5f7925cdd5d63a0714242102e /arch/sh | |
parent | 718dbf376ac39b8f8c974e9162430754dbace742 (diff) | |
download | op-kernel-dev-0fc11e3618bb1f9e0640127ec84f5d2690fa3894.zip op-kernel-dev-0fc11e3618bb1f9e0640127ec84f5d2690fa3894.tar.gz |
sh: unwinder: Convert frame allocations to GFP_ATOMIC.
save_stack_trace_tsk() and friends can be called from atomic context (as
triggered by latencytop), and subsequently hit two problematic allocation
points that were using GFP_KERNEL (these were dwarf_unwind_stack() and
dwarf_frame_alloc_regs()). Convert these over to GFP_ATOMIC and get
latencytop working with the DWARF unwinder.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/kernel/dwarf.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/sh/kernel/dwarf.c b/arch/sh/kernel/dwarf.c index 83f3cc9..db02136 100644 --- a/arch/sh/kernel/dwarf.c +++ b/arch/sh/kernel/dwarf.c @@ -57,7 +57,7 @@ static void dwarf_frame_alloc_regs(struct dwarf_frame *frame, if (frame->num_regs >= num_regs) return; - regs = kzalloc(new_size, GFP_KERNEL); + regs = kzalloc(new_size, GFP_ATOMIC); if (!regs) { printk(KERN_WARNING "Unable to allocate DWARF registers\n"); /* @@ -531,7 +531,7 @@ struct dwarf_frame *dwarf_unwind_stack(unsigned long pc, define_ra = true; } - frame = kzalloc(sizeof(*frame), GFP_KERNEL); + frame = kzalloc(sizeof(*frame), GFP_ATOMIC); if (!frame) return NULL; |