summaryrefslogtreecommitdiffstats
path: root/kernel/time/tick-internal.h
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2018-12-17 14:11:19 -0800
committerVineet Gupta <vgupta@synopsys.com>2019-01-17 14:38:00 -0800
commitab6c03676cb190156603cf4c5ecf97aa406c9c53 (patch)
treefd5b904be3253e9a1aae3af7ebda79b4bcf92399 /kernel/time/tick-internal.h
parent29133260f7c2e4ce50b4da6bf0674331bc0a4da5 (diff)
downloadlinux-stable-ab6c03676cb190156603cf4c5ecf97aa406c9c53.tar.gz
linux-stable-ab6c03676cb190156603cf4c5ecf97aa406c9c53.tar.bz2
linux-stable-ab6c03676cb190156603cf4c5ecf97aa406c9c53.zip
ARC: show_regs: lockdep: avoid page allocator...
and use smaller/on-stack buffer instead The motivation for this change was lockdep splat like below. | potentially unexpected fatal signal 11. | BUG: sleeping function called from invalid context at ../mm/page_alloc.c:4317 | in_atomic(): 1, irqs_disabled(): 0, pid: 57, name: segv | no locks held by segv/57. | Preemption disabled at: | [<8182f17e>] get_signal+0x4a6/0x7c4 | CPU: 0 PID: 57 Comm: segv Not tainted 4.17.0+ #23 | | Stack Trace: | arc_unwind_core.constprop.1+0xd0/0xf4 | __might_sleep+0x1f6/0x234 | __get_free_pages+0x174/0xca0 | show_regs+0x22/0x330 | get_signal+0x4ac/0x7c4 # print_fatal_signals() -> preempt_disable() | do_signal+0x30/0x224 | resume_user_mode_begin+0x90/0xd8 So signal handling core calls show_regs() with preemption disabled but an ensuing GFP_KERNEL page allocator call is flagged by lockdep. We could have switched to GFP_NOWAIT, but turns out that is not enough anways and eliding page allocator call leads to less code and instruction traces to sift thru when debugging pesky crashes. FWIW, this patch doesn't cure the lockdep splat (which next patch does). Reviewed-by: William Kucharski <william.kucharski@oracle.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'kernel/time/tick-internal.h')
0 files changed, 0 insertions, 0 deletions