From: Greg Kroah-Hartman Date: Fri, 9 Jul 2021 13:09:08 +0000 (+0200) Subject: 4.4-stable patches X-Git-Tag: v4.4.275~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=85294e0377ddd20c5ed66665d8409218fb42d000;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: arm-kprobes-allow-to-handle-reentered-kprobe-on-single-stepping.patch --- diff --git a/queue-4.4/arm-kprobes-allow-to-handle-reentered-kprobe-on-single-stepping.patch b/queue-4.4/arm-kprobes-allow-to-handle-reentered-kprobe-on-single-stepping.patch new file mode 100644 index 00000000000..84699418f87 --- /dev/null +++ b/queue-4.4/arm-kprobes-allow-to-handle-reentered-kprobe-on-single-stepping.patch @@ -0,0 +1,55 @@ +From f3fbd7ec62dec1528fb8044034e2885f2b257941 Mon Sep 17 00:00:00 2001 +From: Masami Hiramatsu +Date: Tue, 14 Feb 2017 00:03:38 +0900 +Subject: arm: kprobes: Allow to handle reentered kprobe on single-stepping + +From: Masami Hiramatsu + +commit f3fbd7ec62dec1528fb8044034e2885f2b257941 upstream. + +This is arm port of commit 6a5022a56ac3 ("kprobes/x86: Allow to +handle reentered kprobe on single-stepping") + +Since the FIQ handlers can interrupt in the single stepping +(or preparing the single stepping, do_debug etc.), we should +consider a kprobe is hit in the NMI handler. Even in that +case, the kprobe is allowed to be reentered as same as the +kprobes hit in kprobe handlers +(KPROBE_HIT_ACTIVE or KPROBE_HIT_SSDONE). + +The real issue will happen when a kprobe hit while another +reentered kprobe is processing (KPROBE_REENTER), because +we already consumed a saved-area for the previous kprobe. + +Signed-off-by: Masami Hiramatsu +Signed-off-by: Jon Medhurst +Fixes: 24ba613c9d6c ("ARM kprobes: core code") +Cc: stable@vger.kernel.org #v2.6.25~v4.11 +Signed-off-by: huangshaobo +Signed-off-by: Greg Kroah-Hartman +--- + arch/arm/probes/kprobes/core.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/arch/arm/probes/kprobes/core.c ++++ b/arch/arm/probes/kprobes/core.c +@@ -270,6 +270,7 @@ void __kprobes kprobe_handler(struct pt_ + switch (kcb->kprobe_status) { + case KPROBE_HIT_ACTIVE: + case KPROBE_HIT_SSDONE: ++ case KPROBE_HIT_SS: + /* A pre- or post-handler probe got us here. */ + kprobes_inc_nmissed_count(p); + save_previous_kprobe(kcb); +@@ -278,6 +279,11 @@ void __kprobes kprobe_handler(struct pt_ + singlestep(p, regs, kcb); + restore_previous_kprobe(kcb); + break; ++ case KPROBE_REENTER: ++ /* A nested probe was hit in FIQ, it is a BUG */ ++ pr_warn("Unrecoverable kprobe detected at %p.\n", ++ p->addr); ++ /* fall through */ + default: + /* impossible cases */ + BUG(); diff --git a/queue-4.4/series b/queue-4.4/series index 1f135223a8d..23c7843708e 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -1,3 +1,4 @@ scsi-sr-return-appropriate-error-code-when-disk-is-e.patch drm-nouveau-fix-dma_address-check-for-cpu-gpu-sync.patch xen-events-reset-active-flag-for-lateeoi-events-later.patch +arm-kprobes-allow-to-handle-reentered-kprobe-on-single-stepping.patch