From: Sasha Levin Date: Mon, 16 Aug 2021 02:27:22 +0000 (-0400) Subject: Fixes for 4.14 X-Git-Tag: v5.4.142~41 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8d78f84ec16a84a1316c9fc3eb0340ec2feeb063;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 4.14 Signed-off-by: Sasha Levin --- diff --git a/queue-4.14/powerpc-kprobes-fix-kprobe-oops-happens-in-booke.patch b/queue-4.14/powerpc-kprobes-fix-kprobe-oops-happens-in-booke.patch new file mode 100644 index 00000000000..c2fa1d88ac8 --- /dev/null +++ b/queue-4.14/powerpc-kprobes-fix-kprobe-oops-happens-in-booke.patch @@ -0,0 +1,82 @@ +From 789b374b17f6511fd5e4667bca7f578efd9057a4 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 9 Aug 2021 10:36:58 +0800 +Subject: powerpc/kprobes: Fix kprobe Oops happens in booke + +From: Pu Lehui + +[ Upstream commit 43e8f76006592cb1573a959aa287c45421066f9c ] + +When using kprobe on powerpc booke series processor, Oops happens +as show bellow: + +/ # echo "p:myprobe do_nanosleep" > /sys/kernel/debug/tracing/kprobe_events +/ # echo 1 > /sys/kernel/debug/tracing/events/kprobes/myprobe/enable +/ # sleep 1 +[ 50.076730] Oops: Exception in kernel mode, sig: 5 [#1] +[ 50.077017] BE PAGE_SIZE=4K SMP NR_CPUS=24 QEMU e500 +[ 50.077221] Modules linked in: +[ 50.077462] CPU: 0 PID: 77 Comm: sleep Not tainted 5.14.0-rc4-00022-g251a1524293d #21 +[ 50.077887] NIP: c0b9c4e0 LR: c00ebecc CTR: 00000000 +[ 50.078067] REGS: c3883de0 TRAP: 0700 Not tainted (5.14.0-rc4-00022-g251a1524293d) +[ 50.078349] MSR: 00029000 CR: 24000228 XER: 20000000 +[ 50.078675] +[ 50.078675] GPR00: c00ebdf0 c3883e90 c313e300 c3883ea0 00000001 00000000 c3883ecc 00000001 +[ 50.078675] GPR08: c100598c c00ea250 00000004 00000000 24000222 102490c2 bff4180c 101e60d4 +[ 50.078675] GPR16: 00000000 102454ac 00000040 10240000 10241100 102410f8 10240000 00500000 +[ 50.078675] GPR24: 00000002 00000000 c3883ea0 00000001 00000000 0000c350 3b9b8d50 00000000 +[ 50.080151] NIP [c0b9c4e0] do_nanosleep+0x0/0x190 +[ 50.080352] LR [c00ebecc] hrtimer_nanosleep+0x14c/0x1e0 +[ 50.080638] Call Trace: +[ 50.080801] [c3883e90] [c00ebdf0] hrtimer_nanosleep+0x70/0x1e0 (unreliable) +[ 50.081110] [c3883f00] [c00ec004] sys_nanosleep_time32+0xa4/0x110 +[ 50.081336] [c3883f40] [c001509c] ret_from_syscall+0x0/0x28 +[ 50.081541] --- interrupt: c00 at 0x100a4d08 +[ 50.081749] NIP: 100a4d08 LR: 101b5234 CTR: 00000003 +[ 50.081931] REGS: c3883f50 TRAP: 0c00 Not tainted (5.14.0-rc4-00022-g251a1524293d) +[ 50.082183] MSR: 0002f902 CR: 24000222 XER: 00000000 +[ 50.082457] +[ 50.082457] GPR00: 000000a2 bf980040 1024b4d0 bf980084 bf980084 64000000 00555345 fefefeff +[ 50.082457] GPR08: 7f7f7f7f 101e0000 00000069 00000003 28000422 102490c2 bff4180c 101e60d4 +[ 50.082457] GPR16: 00000000 102454ac 00000040 10240000 10241100 102410f8 10240000 00500000 +[ 50.082457] GPR24: 00000002 bf9803f4 10240000 00000000 00000000 100039e0 00000000 102444e8 +[ 50.083789] NIP [100a4d08] 0x100a4d08 +[ 50.083917] LR [101b5234] 0x101b5234 +[ 50.084042] --- interrupt: c00 +[ 50.084238] Instruction dump: +[ 50.084483] 4bfffc40 60000000 60000000 60000000 9421fff0 39400402 914200c0 38210010 +[ 50.084841] 4bfffc20 00000000 00000000 00000000 <7fe00008> 7c0802a6 7c892378 93c10048 +[ 50.085487] ---[ end trace f6fffe98e2fa8f3e ]--- +[ 50.085678] +Trace/breakpoint trap + +There is no real mode for booke arch and the MMU translation is +always on. The corresponding MSR_IS/MSR_DS bit in booke is used +to switch the address space, but not for real mode judgment. + +Fixes: 21f8b2fa3ca5 ("powerpc/kprobes: Ignore traps that happened in real mode") +Signed-off-by: Pu Lehui +Signed-off-by: Michael Ellerman +Link: https://lore.kernel.org/r/20210809023658.218915-1-pulehui@huawei.com +Signed-off-by: Sasha Levin +--- + arch/powerpc/kernel/kprobes.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c +index 07d3f3b40246..b8b62df102f1 100644 +--- a/arch/powerpc/kernel/kprobes.c ++++ b/arch/powerpc/kernel/kprobes.c +@@ -279,7 +279,8 @@ int kprobe_handler(struct pt_regs *regs) + if (user_mode(regs)) + return 0; + +- if (!(regs->msr & MSR_IR) || !(regs->msr & MSR_DR)) ++ if (!IS_ENABLED(CONFIG_BOOKE) && ++ (!(regs->msr & MSR_IR) || !(regs->msr & MSR_DR))) + return 0; + + /* +-- +2.30.2 + diff --git a/queue-4.14/series b/queue-4.14/series index f0fa0540826..07b30882368 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -15,3 +15,5 @@ net-bridge-fix-memleak-in-br_add_if.patch tcp_bbr-fix-u32-wrap-bug-in-round-logic-if-bbr_init-.patch xen-events-fix-race-in-set_evtchn_to_irq.patch vsock-virtio-avoid-potential-deadlock-when-vsock-dev.patch +powerpc-kprobes-fix-kprobe-oops-happens-in-booke.patch +x86-tools-fix-objdump-version-check-again.patch diff --git a/queue-4.14/x86-tools-fix-objdump-version-check-again.patch b/queue-4.14/x86-tools-fix-objdump-version-check-again.patch new file mode 100644 index 00000000000..3eea0bcf4c6 --- /dev/null +++ b/queue-4.14/x86-tools-fix-objdump-version-check-again.patch @@ -0,0 +1,42 @@ +From adb25c23046e369ccb1bff9377b65a7b0725d018 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 30 Jul 2021 17:01:46 -0700 +Subject: x86/tools: Fix objdump version check again + +From: Randy Dunlap + +[ Upstream commit 839ad22f755132838f406751439363c07272ad87 ] + +Skip (omit) any version string info that is parenthesized. + +Warning: objdump version 15) is older than 2.19 +Warning: Skipping posttest. + +where 'objdump -v' says: +GNU objdump (GNU Binutils; SUSE Linux Enterprise 15) 2.35.1.20201123-7.18 + +Fixes: 8bee738bb1979 ("x86: Fix objdump version check in chkobjdump.awk for different formats.") +Signed-off-by: Randy Dunlap +Signed-off-by: Thomas Gleixner +Reviewed-by: Masami Hiramatsu +Link: https://lore.kernel.org/r/20210731000146.2720-1-rdunlap@infradead.org +Signed-off-by: Sasha Levin +--- + arch/x86/tools/chkobjdump.awk | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/x86/tools/chkobjdump.awk b/arch/x86/tools/chkobjdump.awk +index fd1ab80be0de..a4cf678cf5c8 100644 +--- a/arch/x86/tools/chkobjdump.awk ++++ b/arch/x86/tools/chkobjdump.awk +@@ -10,6 +10,7 @@ BEGIN { + + /^GNU objdump/ { + verstr = "" ++ gsub(/\(.*\)/, ""); + for (i = 3; i <= NF; i++) + if (match($(i), "^[0-9]")) { + verstr = $(i); +-- +2.30.2 +