linux/arch/arm64/kernel
Yang Shi abffa6f3b1 arm64: convert patch_lock to raw lock
When running kprobe test on arm64 rt kernel, it reports the below warning:

root@qemu7:~# modprobe kprobe_example
BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:917
in_atomic(): 0, irqs_disabled(): 128, pid: 484, name: modprobe
CPU: 0 PID: 484 Comm: modprobe Not tainted 4.1.6-rt5 #2
Hardware name: linux,dummy-virt (DT)
Call trace:
[<ffffffc0000891b8>] dump_backtrace+0x0/0x128
[<ffffffc000089300>] show_stack+0x20/0x30
[<ffffffc00061dae8>] dump_stack+0x1c/0x28
[<ffffffc0000bbad0>] ___might_sleep+0x120/0x198
[<ffffffc0006223e8>] rt_spin_lock+0x28/0x40
[<ffffffc000622b30>] __aarch64_insn_write+0x28/0x78
[<ffffffc000622e48>] aarch64_insn_patch_text_nosync+0x18/0x48
[<ffffffc000622ee8>] aarch64_insn_patch_text_cb+0x70/0xa0
[<ffffffc000622f40>] aarch64_insn_patch_text_sync+0x28/0x48
[<ffffffc0006236e0>] arch_arm_kprobe+0x38/0x48
[<ffffffc00010e6f4>] arm_kprobe+0x34/0x50
[<ffffffc000110374>] register_kprobe+0x4cc/0x5b8
[<ffffffbffc002038>] kprobe_init+0x38/0x7c [kprobe_example]
[<ffffffc000084240>] do_one_initcall+0x90/0x1b0
[<ffffffc00061c498>] do_init_module+0x6c/0x1cc
[<ffffffc0000fd0c0>] load_module+0x17f8/0x1db0
[<ffffffc0000fd8cc>] SyS_finit_module+0xb4/0xc8

Convert patch_lock to raw loc kto avoid this issue.

Although the problem is found on rt kernel, the fix should be applicable to
mainline kernel too.

Acked-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Yang Shi <yang.shi@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2015-10-05 18:30:29 +01:00
..
vdso arm64: vdso: work-around broken ELF toolchains in Makefile 2015-06-19 14:54:10 +01:00
.gitignore
acpi.c arm64: psci: remove ACPI coupling 2015-05-27 13:22:24 +01:00
alternative.c arm64: alternatives: ensure secondary CPUs execute ISB after patching 2015-08-04 18:52:09 +01:00
arm64ksyms.c
armv8_deprecated.c arm64: kernel: Add support for Privileged Access Never 2015-07-27 11:08:41 +01:00
asm-offsets.c arm64: KVM: remove remaining reference to vgic_sr_vectors 2015-08-12 11:28:23 +01:00
cacheinfo.c arm64: kernel: add support for cpu cache information 2015-01-15 11:55:07 +00:00
cpu_errata.c arm64: fix midr range for Cortex-A57 erratum 832075 2015-04-01 11:12:03 +01:00
cpu_ops.c arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
cpufeature.c arm64: lse: use generic cpufeature detection for LSE atomics 2015-07-27 16:37:14 +01:00
cpuidle.c arm64: cpuidle: add __init section marker to arm_cpuidle_init 2015-07-02 17:44:27 +01:00
cpuinfo.c arm64: Extract feature parsing code from cpu_errata.c 2015-03-30 11:03:43 +01:00
debug-monitors.c arm64: debug: Fix typo in debug-monitors.c 2015-10-05 16:30:50 +01:00
efi-entry.S arm64 updates for 3.19 2014-12-09 13:12:47 -08:00
efi-stub.c arm64: efi: prefer AllocatePages() over efi_low_alloc() for vmlinux 2015-07-27 11:08:41 +01:00
efi.c arm64/efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME regions 2015-10-01 12:51:28 +02:00
entry32.S arm64: entry32: remove pointless register assignment 2015-07-10 16:47:13 +01:00
entry-fpsimd.S
entry-ftrace.S arm64: ftrace: fix function_graph tracer panic 2015-10-02 11:12:56 +01:00
entry.S arm64: entry: always restore x0 from the stack on syscall return 2015-08-21 15:11:43 +01:00
fpsimd.c arm64: flush FP/SIMD state correctly after execve() 2015-08-27 09:55:26 +01:00
ftrace.c arm64: ftrace: fix ftrace_modify_graph_caller for branch replace 2015-02-23 09:13:45 +00:00
head.S arm64: head.S: initialise mdcr_el2 in el2_setup 2015-09-15 15:50:01 +01:00
hw_breakpoint.c arm64: cpu hotplug: ensure we mask out CPU_TASKS_FROZEN in notifiers 2015-09-17 11:57:02 +01:00
hyp-stub.S
image.h
insn.c arm64: convert patch_lock to raw lock 2015-10-05 18:30:29 +01:00
io.c arm64: optimize memcpy_{from,to}io() and memset_io() 2014-11-06 17:25:27 +00:00
irq.c arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
jump_label.c jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP} 2015-08-03 11:34:12 +02:00
kgdb.c arm64/debug: Simplify BRK insn opcode declarations 2015-07-27 11:08:42 +01:00
kuser32.S
Makefile arm64: makefile: fix perf_callchain.o kconfig dependency 2015-08-24 13:44:08 +01:00
module.c arm64: errata: add module build workaround for erratum #843419 2015-09-17 11:57:03 +01:00
pci.c ARM64: PCI: do not enable resources on PROBE_ONLY systems 2015-07-30 20:17:07 +01:00
perf_callchain.c arm64: perf: factor out callchain code 2015-07-27 11:08:39 +01:00
perf_event.c arm64: perf: condense event number maps 2015-07-27 11:08:40 +01:00
perf_regs.c perf: Move task_pt_regs sampling into arch code 2015-01-09 11:12:28 +01:00
process.c arm64: kernel thread don't need to save fpsimd context. 2015-06-11 15:35:23 +01:00
psci-call.S arm64: psci: move psci firmware calls out of line 2015-02-26 18:23:53 +00:00
psci.c Merge branch 'aarch64/psci/drivers' into aarch64/for-next/core 2015-08-05 14:14:06 +01:00
ptrace.c arm64: Better native ptrace support for compat tasks 2015-07-27 11:08:39 +01:00
return_address.c
setup.c arm64: support initrd outside kernel linear map 2015-09-08 15:35:28 -07:00
signal32.c arm64: compat: fix vfp save/restore across signal handlers in big-endian 2015-09-17 11:57:03 +01:00
signal.c arm64: Removed unused variable 2015-04-13 20:40:10 +02:00
sleep.S arm64: mm: ensure patched kernel text is fetched from PoU 2015-08-05 10:05:20 +01:00
smp_spin_table.c ARM64: kernel: make cpu_ops hooks DT agnostic 2015-05-19 16:09:29 +01:00
smp.c arm64: remove dead-code depending on CONFIG_UP_LATE_INIT 2015-07-29 18:32:09 +01:00
stacktrace.c
suspend.c arm64: kernel: rename __cpu_suspend to keep it aligned with arm 2015-06-19 14:46:39 +01:00
sys32.c arm64: fix implementation of mmap2 compat syscall 2015-03-19 10:43:51 +00:00
sys_compat.c arm64: compat: align cacheflush syscall with arch/arm 2014-12-01 13:31:12 +00:00
sys.c arm64: make sys_call_table const 2015-01-27 09:38:08 +00:00
time.c arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
topology.c arm64: kernel: remove non-legit DT warnings when booting using ACPI 2015-07-27 11:08:41 +01:00
trace-events-emulation.h arm64: Trace emulation of AArch32 legacy instructions 2014-11-20 16:35:02 +00:00
traps.c arm64/BUG: Show explicit backtrace for WARNs 2015-07-27 11:08:42 +01:00
vdso.c arm64: VDSO: fix coarse clock monotonicity regression 2015-08-10 15:37:45 +01:00
vmlinux.lds.S arm64: reduce ID map to a single page 2015-06-02 17:44:51 +01:00