linux-stable/arch/powerpc/kernel
王贇 ce5e48036c ftrace: disable preemption when recursion locked
As the documentation explained, ftrace_test_recursion_trylock()
and ftrace_test_recursion_unlock() were supposed to disable and
enable preemption properly, however currently this work is done
outside of the function, which could be missing by mistake.

And since the internal using of trace_test_and_set_recursion()
and trace_clear_recursion() also require preemption disabled, we
can just merge the logical.

This patch will make sure the preemption has been disabled when
trace_test_and_set_recursion() return bit >= 0, and
trace_clear_recursion() will enable the preemption if previously
enabled.

Link: https://lkml.kernel.org/r/13bde807-779c-aa4c-0672-20515ae365ea@linux.alibaba.com

CC: Petr Mladek <pmladek@suse.com>
Cc: Guo Ren <guoren@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Cc: Helge Deller <deller@gmx.de>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Borislav Petkov <bp@alien8.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Jiri Kosina <jikos@kernel.org>
Cc: Joe Lawrence <joe.lawrence@redhat.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Jisheng Zhang <jszhang@kernel.org>
CC: Steven Rostedt <rostedt@goodmis.org>
CC: Miroslav Benes <mbenes@suse.cz>
Reported-by: Abaci <abaci@linux.alibaba.com>
Suggested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Michael Wang <yun.wang@linux.alibaba.com>
[ Removed extra line in comment - SDR ]
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
2021-10-27 11:21:49 -04:00
..
ptrace powerpc: Add dear as a synonym for pt_regs.dar register 2021-08-26 21:21:07 +10:00
syscalls compat: remove some compat entry points 2021-09-08 15:32:35 -07:00
trace powerpc: Don't use 'struct ppc_inst' to reference instruction location 2021-06-17 00:09:00 +10:00
vdso32 powerpc updates for 5.13 2021-04-30 12:22:28 -07:00
vdso64 powerpc/vdso: Don't use r30 to avoid breaking Go lang 2021-07-29 23:13:12 +10:00
.gitignore
align.c powerpc: Rename probe_kernel_read_inst() 2021-04-21 22:52:33 +10:00
asm-offsets.c Merge branch 'fixes' into next 2021-09-03 22:54:12 +10:00
audit.c
btext.c treewide: Convert macro and uses of __section(foo) to __section("foo") 2020-10-25 14:51:49 -07:00
cacheinfo.c powerpc/smp: Use existing L2 cache_map cpumask to find L3 cache siblings 2021-08-04 10:53:39 +10:00
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S
cpu_setup_44x.S
cpu_setup_fsl_booke.S powerpc: Retire e200 core (mpc555x processor) 2020-12-05 21:49:18 +11:00
cpu_setup_pa6t.S
cpu_setup_power.c powerpc/perf: MMCR0 control for PMU registers under PMCC=00 2020-12-04 01:01:29 +11:00
cpu_setup_ppc970.S
cputable.c arch: powerpc: Stop building and using oprofile 2021-01-29 10:05:51 +05:30
crash_dump.c powerpc: Don't use 'struct ppc_inst' to reference instruction location 2021-06-17 00:09:00 +10:00
dawr.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
dbell.c powerpc: handle irq_enter/irq_exit in interrupt handler wrappers 2021-02-09 00:10:49 +11:00
dma-iommu.c powerpc/dma: Fallback to dma_ops when persistent memory present 2020-11-27 10:33:42 +01:00
dma-mask.c
dma-swiotlb.c
dt_cpu_ftrs.c arch: powerpc: Stop building and using oprofile 2021-01-29 10:05:51 +05:30
early_32.c
eeh.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
eeh_cache.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
eeh_driver.c
eeh_event.c
eeh_pe.c powerpc/eeh: Delete eeh_pe->config_addr 2020-10-07 22:34:47 +11:00
eeh_sysfs.c
entry_32.S powerpc/32: indirect function call use bctrl rather than blrl in ret_from_kernel_thread 2021-08-25 13:35:47 +10:00
entry_64.S powerpc/bug: Provide better flexibility to WARN_ON/__WARN_FLAGS() with asm goto 2021-08-15 13:49:24 +10:00
epapr_hcalls.S
epapr_paravirt.c powerpc: Don't use 'struct ppc_inst' to reference instruction location 2021-06-17 00:09:00 +10:00
exceptions-64e.S powerpc/64e: Get dear offset with _DEAR macro 2021-08-26 21:21:07 +10:00
exceptions-64s.S powerpc/64s: Fix scv implicit soft-mask table for relocated kernels 2021-08-20 22:35:18 +10:00
fadump.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
firmware.c powerpc: Fix is_kvm_guest() / kvm_para_available() 2021-06-25 14:47:19 +10:00
fpu.S powerpc/32: Remove unneccessary calculations in load_up_{fpu/altivec} 2021-08-18 23:49:55 +10:00
fsl_booke_entry_mapping.S powerpc/booke: Avoid link stack corruption in several places 2021-08-25 13:35:47 +10:00
head_8xx.S powerpc: Define swapper_pg_dir[] in C 2021-06-17 00:09:10 +10:00
head_32.h powerpc/32: Reduce code duplication of system call entry 2021-06-25 00:07:10 +10:00
head_40x.S powerpc: Define swapper_pg_dir[] in C 2021-06-17 00:09:10 +10:00
head_44x.S powerpc/booke: Avoid link stack corruption in several places 2021-08-25 13:35:47 +10:00
head_64.S powerpc/kexec: blacklist functions called in real mode for kprobe 2021-07-26 20:38:51 +10:00
head_book3s_32.S powerpc/32s: Fix napping restore in data storage interrupt (DSI) 2021-08-07 08:53:59 +10:00
head_booke.h powerpc/32: Fix critical and debug interrupts on BOOKE 2021-08-07 08:53:59 +10:00
head_fsl_booke.S powerpc updates for 5.15 2021-09-03 11:22:50 -07:00
hw_breakpoint.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
hw_breakpoint_constraints.c powerpc/uaccess: Remove __get/put_user_inatomic() 2021-04-03 21:21:41 +11:00
idle.c sched/idle: Fix arch_cpu_idle() vs tracing 2020-11-24 16:47:35 +01:00
idle_6xx.S powerpc/32: Return directly from power_save_ppc32_restore() 2021-03-29 13:22:10 +11:00
idle_book3e.S
idle_book3s.S powerpc/64s: power4 nap fixup in C 2021-04-08 21:17:45 +10:00
idle_e500.S powerpc/32: Return directly from power_save_ppc32_restore() 2021-03-29 13:22:10 +11:00
ima_arch.c
interrupt.c powerpc/64s: system call rfscv workaround for TM bugs 2021-09-13 22:34:11 +10:00
interrupt_64.S powerpc/64s: system call scv tabort fix for corrupt irq soft-mask state 2021-09-13 22:34:11 +10:00
io-workarounds.c powerpc: Fix reverse map real-mode address lookup with huge vmalloc 2021-05-28 22:54:27 +10:00
io.c
iomap.c powerpc: inline iomap accessors 2020-12-04 01:01:09 +11:00
iommu.c powerpc updates for 5.15 2021-09-03 11:22:50 -07:00
irq.c powerpc/interrupt: Fix OOPS by not calling do_IRQ() from timer_interrupt() 2021-08-12 22:21:57 +10:00
isa-bridge.c mm/vmalloc: remove unmap_kernel_range 2021-04-30 11:20:40 -07:00
jump_label.c powerpc: Don't use 'struct ppc_inst' to reference instruction location 2021-06-17 00:09:00 +10:00
kdebugfs.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
kgdb.c powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
kprobes-ftrace.c ftrace: disable preemption when recursion locked 2021-10-27 11:21:49 -04:00
kprobes.c kprobes: treewide: Make it harder to refer kretprobe_trampoline directly 2021-09-30 21:24:06 -04:00
kvm.c
kvm_emul.S
l2cr_6xx.S powerpc: Drop SYNC_601() ISYNC_601() and SYNC() 2020-10-08 21:17:13 +11:00
legacy_serial.c powerpc/legacy_serial: Fix UBSAN: array-index-out-of-bounds 2021-05-12 11:07:39 +10:00
Makefile powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
mce.c powerpc/mce: Fix access error in mce handler 2021-09-13 22:34:12 +10:00
mce_power.c powerpc/powernv: Fix machine check reporting of async store errors 2021-06-21 21:13:19 +10:00
misc.S powerpc: Avoid link stack corruption in misc asm functions 2021-08-25 13:35:47 +10:00
misc_32.S powerpc: Avoid link stack corruption in misc asm functions 2021-08-25 13:35:47 +10:00
misc_64.S powerpc: Avoid link stack corruption in misc asm functions 2021-08-25 13:35:47 +10:00
module.c powerpc/modules: Make module_alloc() Strict Module RWX aware 2021-06-21 21:13:20 +10:00
module_32.c powerpc/modules: Use PPC_RAW_xx() macros 2021-06-16 00:16:48 +10:00
module_64.c powerpc/modules: Use PPC_RAW_xx() macros 2021-06-16 00:16:48 +10:00
msi.c
note.S
nvram_64.c printk: introduce a kmsg_dump iterator 2021-03-08 11:43:27 +01:00
of_platform.c
optprobes.c kprobes: treewide: Make it harder to refer kretprobe_trampoline directly 2021-09-30 21:24:06 -04:00
optprobes_head.S powerpc: Enable OPTPROBES on PPC32 2021-04-21 22:52:32 +10:00
paca.c powerpc/paca: Remove mm_ctx_id and mm_ctx_slb_addr_limit 2021-05-17 15:27:15 +10:00
pci-common.c powerpc/pseries/pci: Add MSI domains 2021-08-10 23:14:57 +10:00
pci-hotplug.c
pci_32.c
pci_64.c mm/vmalloc: remove unmap_kernel_range 2021-04-30 11:20:40 -07:00
pci_dn.c powerpc/pci: Move PHB discovery for PCI_DN using platforms 2021-02-09 00:01:05 +11:00
pci_of_scan.c
pmc.c
ppc32.h
ppc_save_regs.S
proc_powerpc.c
process.c powerpc: Add dear as a synonym for pt_regs.dar register 2021-08-26 21:21:07 +10:00
prom.c Kbuild updates for v5.15 2021-09-03 15:33:47 -07:00
prom_init.c Kbuild updates for v5.15 2021-09-03 15:33:47 -07:00
prom_init_check.sh
prom_parse.c
reloc_32.S powerpc: Avoid link stack corruption in misc asm functions 2021-08-25 13:35:47 +10:00
reloc_64.S
rtas-proc.c powerpc/rtas: rename RTAS_RMOBUF_MAX to RTAS_USER_REGION_SIZE 2021-04-14 23:04:16 +10:00
rtas-rtc.c powerpc/rtas-rtc: remove unused constant 2021-06-25 14:47:20 +10:00
rtas.c isystem: ship and use stdarg.h 2021-08-19 09:02:55 +09:00
rtas_flash.c
rtas_pci.c
rtasd.c powerpc: Replace deprecated CPU-hotplug functions. 2021-08-10 23:14:56 +10:00
secure_boot.c
security.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
secvar-ops.c
secvar-sysfs.c
setup-common.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
setup.h powerpc: remove unneeded semicolons 2021-02-09 00:10:50 +11:00
setup_32.c powerpc: Don't use 'struct ppc_inst' to reference instruction location 2021-06-17 00:09:00 +10:00
setup_64.c powerpc: rename powerpc_debugfs_root to arch_debugfs_dir 2021-08-13 22:04:26 +10:00
signal.c entry: rseq: Call rseq_handle_notify_resume() in tracehook_notify_resume() 2021-09-22 10:24:01 -04:00
signal.h powerpc/signal: Fix possible build failure with unsafe_copy_fpr_{to/from}_user 2021-05-12 11:07:39 +10:00
signal_32.c powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
signal_64.c powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
smp-tbsync.c
smp.c powerpc/numa: Update cpu_cpu_map on CPU online/offline 2021-08-27 00:56:54 +10:00
stacktrace.c kprobes: treewide: Make it harder to refer kretprobe_trampoline directly 2021-09-30 21:24:06 -04:00
suspend.c
swsusp.c
swsusp_32.S
swsusp_64.c
swsusp_asm64.S
swsusp_booke.S
sys_ppc32.c powerpc/compat_sys: swap hi/lo parts of 64-bit syscall args in LE mode 2021-02-11 23:35:07 +11:00
syscalls.c powerpc/syscalls: Simplify do_mmap2() 2021-08-25 13:35:48 +10:00
sysfs.c powerpc/smp: Fix OOPS in topology_init() 2021-08-07 08:53:59 +10:00
systbl.S powerpc/syscalls: switch to generic syscalltbl.sh 2021-04-14 23:04:16 +10:00
systbl_chk.sh
tau_6xx.c powerpc/tau: Add 'static' storage qualifier to 'tau_work' definition 2021-08-20 17:00:53 +10:00
time.c Merge branch 'fixes' into next 2021-09-03 22:54:12 +10:00
tm.S powerpc/tm: Save and restore AMR on treclaim and trechkpt 2020-10-06 23:22:25 +11:00
traps.c Merge branch 'akpm' (patches from Andrew) 2021-09-08 12:55:35 -07:00
ucall.S
udbg.c isystem: ship and use stdarg.h 2021-08-19 09:02:55 +09:00
udbg_16550.c powerpc/microwatt: Use standard 16550 UART for console 2021-06-21 21:16:31 +10:00
uprobes.c powerpc/64s: avoid reloading (H)SRR registers if they are still valid 2021-06-25 00:06:55 +10:00
vdso.c powerpc/vdso: Add support for time namespaces 2021-04-14 23:04:44 +10:00
vdso32_wrapper.S powerpc/vdso: fix unnecessary rebuilds of vgettimeofday.o 2021-01-30 22:23:42 +11:00
vdso64_wrapper.S powerpc/vdso: fix unnecessary rebuilds of vgettimeofday.o 2021-01-30 22:23:42 +11:00
vecemu.c
vector.S powerpc/32: Remove unneccessary calculations in load_up_{fpu/altivec} 2021-08-18 23:49:55 +10:00
vmlinux.lds.S powerpc/64s: add a table of implicit soft-masked addresses 2021-06-30 22:21:20 +10:00
watchdog.c Merge branch 'rework/printk_safe-removal' into for-linus 2021-08-30 16:36:10 +02:00