From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>,
Steven Rostedt <rostedt@goodmis.org>,
Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>,
Michael Ellerman <mpe@ellerman.id.au>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 4.4 19/35] recordmcount: Fix spurious mcount entries on powerpc
Date: Fri, 19 Jul 2019 00:14:07 -0400 [thread overview]
Message-ID: <20190719041423.19322-19-sashal@kernel.org> (raw)
In-Reply-To: <20190719041423.19322-1-sashal@kernel.org>
From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
[ Upstream commit 80e5302e4bc85a6b685b7668c36c6487b5f90e9a ]
An impending change to enable HAVE_C_RECORDMCOUNT on powerpc leads to
warnings such as the following:
# modprobe kprobe_example
ftrace-powerpc: Not expected bl: opcode is 3c4c0001
WARNING: CPU: 0 PID: 227 at kernel/trace/ftrace.c:2001 ftrace_bug+0x90/0x318
Modules linked in:
CPU: 0 PID: 227 Comm: modprobe Not tainted 5.2.0-rc6-00678-g1c329100b942 #2
NIP: c000000000264318 LR: c00000000025d694 CTR: c000000000f5cd30
REGS: c000000001f2b7b0 TRAP: 0700 Not tainted (5.2.0-rc6-00678-g1c329100b942)
MSR: 900000010282b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE,TM[E]> CR: 28228222 XER: 00000000
CFAR: c0000000002642fc IRQMASK: 0
<snip>
NIP [c000000000264318] ftrace_bug+0x90/0x318
LR [c00000000025d694] ftrace_process_locs+0x4f4/0x5e0
Call Trace:
[c000000001f2ba40] [0000000000000004] 0x4 (unreliable)
[c000000001f2bad0] [c00000000025d694] ftrace_process_locs+0x4f4/0x5e0
[c000000001f2bb90] [c00000000020ff10] load_module+0x25b0/0x30c0
[c000000001f2bd00] [c000000000210cb0] sys_finit_module+0xc0/0x130
[c000000001f2be20] [c00000000000bda4] system_call+0x5c/0x70
Instruction dump:
419e0018 2f83ffff 419e00bc 2f83ffea 409e00cc 4800001c 0fe00000 3c62ff96
39000001 39400000 386386d0 480000c4 <0fe00000> 3ce20003 39000001 3c62ff96
---[ end trace 4c438d5cebf78381 ]---
ftrace failed to modify
[<c0080000012a0008>] 0xc0080000012a0008
actual: 01:00:4c:3c
Initializing ftrace call sites
ftrace record flags: 2000000
(0)
expected tramp: c00000000006af4c
Looking at the relocation records in __mcount_loc shows a few spurious
entries:
RELOCATION RECORDS FOR [__mcount_loc]:
OFFSET TYPE VALUE
0000000000000000 R_PPC64_ADDR64 .text.unlikely+0x0000000000000008
0000000000000008 R_PPC64_ADDR64 .text.unlikely+0x0000000000000014
0000000000000010 R_PPC64_ADDR64 .text.unlikely+0x0000000000000060
0000000000000018 R_PPC64_ADDR64 .text.unlikely+0x00000000000000b4
0000000000000020 R_PPC64_ADDR64 .init.text+0x0000000000000008
0000000000000028 R_PPC64_ADDR64 .init.text+0x0000000000000014
The first entry in each section is incorrect. Looking at the
relocation records, the spurious entries correspond to the
R_PPC64_ENTRY records:
RELOCATION RECORDS FOR [.text.unlikely]:
OFFSET TYPE VALUE
0000000000000000 R_PPC64_REL64 .TOC.-0x0000000000000008
0000000000000008 R_PPC64_ENTRY *ABS*
0000000000000014 R_PPC64_REL24 _mcount
<snip>
The problem is that we are not validating the return value from
get_mcountsym() in sift_rel_mcount(). With this entry, mcountsym is 0,
but Elf_r_sym(relp) also ends up being 0. Fix this by ensuring
mcountsym is valid before processing the entry.
Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Tested-by: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
scripts/recordmcount.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/recordmcount.h b/scripts/recordmcount.h
index b9897e2be404..04151ede8043 100644
--- a/scripts/recordmcount.h
+++ b/scripts/recordmcount.h
@@ -326,7 +326,8 @@ static uint_t *sift_rel_mcount(uint_t *mlocp,
if (!mcountsym)
mcountsym = get_mcountsym(sym0, relp, str0);
- if (mcountsym == Elf_r_sym(relp) && !is_fake_mcount(relp)) {
+ if (mcountsym && mcountsym == Elf_r_sym(relp) &&
+ !is_fake_mcount(relp)) {
uint_t const addend =
_w(_w(relp->r_offset) - recval + mcount_adjust);
mrelp->r_offset = _w(offbase
--
2.20.1
next prev parent reply other threads:[~2019-07-19 4:15 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-19 4:13 [PATCH AUTOSEL 4.4 01/35] drm/panel: simple: Fix panel_simple_dsi_probe Sasha Levin
2019-07-19 4:13 ` Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 02/35] usb: core: hub: Disable hub-initiated U1/U2 Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 03/35] tty: max310x: Fix invalid baudrate divisors calculator Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 04/35] pinctrl: rockchip: fix leaked of_node references Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 05/35] tty: serial: cpm_uart - fix init when SMC is relocated Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 06/35] drm/edid: Fix a missing-check bug in drm_load_edid_firmware() Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 07/35] memstick: Fix error cleanup path of memstick_init Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 08/35] tty/serial: digicolor: Fix digicolor-usart already registered warning Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 09/35] tty: serial: msm_serial: avoid system lockup condition Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 10/35] drm/virtio: Add memory barriers for capset cache Sasha Levin
2019-07-19 4:13 ` Sasha Levin
2019-07-19 4:13 ` [PATCH AUTOSEL 4.4 11/35] phy: renesas: rcar-gen2: Fix memory leak at error paths Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 12/35] powerpc/pseries/mobility: prevent cpu hotplug during DT update Sasha Levin
2019-07-19 4:14 ` Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 13/35] powerpc/pseries/mobility: rebuild cacheinfo hierarchy post-migration Sasha Levin
2019-07-19 4:14 ` Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 14/35] usb: gadget: Zero ffs_io_data Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 15/35] powerpc/pci/of: Fix OF flags parsing for 64bit BARs Sasha Levin
2019-07-19 4:14 ` Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 16/35] PCI: sysfs: Ignore lockdep for remove attribute Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 17/35] iio: st_accel: fix iio_triggered_buffer_{pre,post}enable positions Sasha Levin
2019-07-21 17:23 ` Jonathan Cameron
2019-07-22 6:47 ` Ardelean, Alexandru
2019-07-28 15:43 ` Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 18/35] iio: iio-utils: Fix possible incorrect mask calculation Sasha Levin
2019-07-21 17:27 ` Jonathan Cameron
2019-07-19 4:14 ` Sasha Levin [this message]
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 20/35] mfd: core: Set fwnode for created devices Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 21/35] mfd: arizona: Fix undefined behavior Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 22/35] um: Silence lockdep complaint about mmap_sem Sasha Levin
2019-07-19 4:14 ` Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 23/35] powerpc/4xx/uic: clear pending interrupt after irq type/pol change Sasha Levin
2019-07-19 4:14 ` Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 24/35] serial: sh-sci: Fix TX DMA buffer flushing and workqueue races Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 25/35] PCI: tegra: Enable Relaxed Ordering only for Tegra20 & Tegra30 Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 26/35] kallsyms: exclude kasan local symbols on s390 Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 27/35] perf test mmap-thread-lookup: Initialize variable to suppress memory sanitizer warning Sasha Levin
2019-07-19 4:14 ` [f2fs-dev] [PATCH AUTOSEL 4.4 28/35] f2fs: avoid out-of-range memory access Sasha Levin
2019-07-19 4:14 ` Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 29/35] mailbox: handle failed named mailbox channel request Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 30/35] powerpc/eeh: Handle hugepages in ioremap space Sasha Levin
2019-07-19 4:14 ` Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 31/35] sh: prevent warnings when using iounmap Sasha Levin
2019-07-19 4:14 ` Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 32/35] mm/kmemleak.c: fix check for softirq context Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 33/35] 9p: pass the correct prototype to read_cache_page Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 34/35] mm/mmu_notifier: use hlist_add_head_rcu() Sasha Levin
2019-07-19 4:14 ` [PATCH AUTOSEL 4.4 35/35] locking/lockdep: Fix lock used or unused stats error Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190719041423.19322-19-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mpe@ellerman.id.au \
--cc=naveen.n.rao@linux.vnet.ibm.com \
--cc=rostedt@goodmis.org \
--cc=sathnaga@linux.vnet.ibm.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.