From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
Alexander Sverdlin <alexander.sverdlin@nokia.com>,
"Steven Rostedt (VMware)" <rostedt@goodmis.org>,
Russell King <rmk+kernel@armlinux.org.uk>
Subject: [PATCH 4.19 29/92] ARM: 8950/1: ftrace/recordmcount: filter relocation types
Date: Tue, 28 Jan 2020 15:07:57 +0100 [thread overview]
Message-ID: <20200128135812.767881410@linuxfoundation.org> (raw)
In-Reply-To: <20200128135809.344954797@linuxfoundation.org>
From: Alex Sverdlin <alexander.sverdlin@nokia.com>
commit 927d780ee371d7e121cea4fc7812f6ef2cea461c upstream.
Scenario 1, ARMv7
=================
If code in arch/arm/kernel/ftrace.c would operate on mcount() pointer
the following may be generated:
00000230 <prealloc_fixed_plts>:
230: b5f8 push {r3, r4, r5, r6, r7, lr}
232: b500 push {lr}
234: f7ff fffe bl 0 <__gnu_mcount_nc>
234: R_ARM_THM_CALL __gnu_mcount_nc
238: f240 0600 movw r6, #0
238: R_ARM_THM_MOVW_ABS_NC __gnu_mcount_nc
23c: f8d0 1180 ldr.w r1, [r0, #384] ; 0x180
FTRACE currently is not able to deal with it:
WARNING: CPU: 0 PID: 0 at .../kernel/trace/ftrace.c:1979 ftrace_bug+0x1ad/0x230()
...
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.116-... #1
...
[<c0314e3d>] (unwind_backtrace) from [<c03115e9>] (show_stack+0x11/0x14)
[<c03115e9>] (show_stack) from [<c051a7f1>] (dump_stack+0x81/0xa8)
[<c051a7f1>] (dump_stack) from [<c0321c5d>] (warn_slowpath_common+0x69/0x90)
[<c0321c5d>] (warn_slowpath_common) from [<c0321cf3>] (warn_slowpath_null+0x17/0x1c)
[<c0321cf3>] (warn_slowpath_null) from [<c038ee9d>] (ftrace_bug+0x1ad/0x230)
[<c038ee9d>] (ftrace_bug) from [<c038f1f9>] (ftrace_process_locs+0x27d/0x444)
[<c038f1f9>] (ftrace_process_locs) from [<c08915bd>] (ftrace_init+0x91/0xe8)
[<c08915bd>] (ftrace_init) from [<c0885a67>] (start_kernel+0x34b/0x358)
[<c0885a67>] (start_kernel) from [<00308095>] (0x308095)
---[ end trace cb88537fdc8fa200 ]---
ftrace failed to modify [<c031266c>] prealloc_fixed_plts+0x8/0x60
actual: 44:f2:e1:36
ftrace record flags: 0
(0) expected tramp: c03143e9
Scenario 2, ARMv4T
==================
ftrace: allocating 14435 entries in 43 pages
------------[ cut here ]------------
WARNING: CPU: 0 PID: 0 at kernel/trace/ftrace.c:2029 ftrace_bug+0x204/0x310
CPU: 0 PID: 0 Comm: swapper Not tainted 4.19.5 #1
Hardware name: Cirrus Logic EDB9302 Evaluation Board
[<c0010a24>] (unwind_backtrace) from [<c000ecb0>] (show_stack+0x20/0x2c)
[<c000ecb0>] (show_stack) from [<c03c72e8>] (dump_stack+0x20/0x30)
[<c03c72e8>] (dump_stack) from [<c0021c18>] (__warn+0xdc/0x104)
[<c0021c18>] (__warn) from [<c0021d7c>] (warn_slowpath_null+0x4c/0x5c)
[<c0021d7c>] (warn_slowpath_null) from [<c0095360>] (ftrace_bug+0x204/0x310)
[<c0095360>] (ftrace_bug) from [<c04dabac>] (ftrace_init+0x3b4/0x4d4)
[<c04dabac>] (ftrace_init) from [<c04cef4c>] (start_kernel+0x20c/0x410)
[<c04cef4c>] (start_kernel) from [<00000000>] ( (null))
---[ end trace 0506a2f5dae6b341 ]---
ftrace failed to modify
[<c000c350>] perf_trace_sys_exit+0x5c/0xe8
actual: 1e:ff:2f:e1
Initializing ftrace call sites
ftrace record flags: 0
(0)
expected tramp: c000fb24
The analysis for this problem has been already performed previously,
refer to the link below.
Fix the above problems by allowing only selected reloc types in
__mcount_loc. The list itself comes from the legacy recordmcount.pl
script.
Link: https://lore.kernel.org/lkml/56961010.6000806@pengutronix.de/
Cc: stable@vger.kernel.org
Fixes: ed60453fa8f8 ("ARM: 6511/1: ftrace: add ARM support for C version of recordmcount")
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
scripts/recordmcount.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
--- a/scripts/recordmcount.c
+++ b/scripts/recordmcount.c
@@ -39,6 +39,10 @@
#define R_AARCH64_ABS64 257
#endif
+#define R_ARM_PC24 1
+#define R_ARM_THM_CALL 10
+#define R_ARM_CALL 28
+
static int fd_map; /* File descriptor for file being modified. */
static int mmap_failed; /* Boolean flag. */
static char gpfx; /* prefix for global symbol name (sometimes '_') */
@@ -414,6 +418,18 @@ is_mcounted_section_name(char const *con
#define RECORD_MCOUNT_64
#include "recordmcount.h"
+static int arm_is_fake_mcount(Elf32_Rel const *rp)
+{
+ switch (ELF32_R_TYPE(w(rp->r_info))) {
+ case R_ARM_THM_CALL:
+ case R_ARM_CALL:
+ case R_ARM_PC24:
+ return 0;
+ }
+
+ return 1;
+}
+
/* 64-bit EM_MIPS has weird ELF64_Rela.r_info.
* http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf
* We interpret Table 29 Relocation Operation (Elf64_Rel, Elf64_Rela) [p.40]
@@ -515,6 +531,7 @@ do_file(char const *const fname)
altmcount = "__gnu_mcount_nc";
make_nop = make_nop_arm;
rel_type_nop = R_ARM_NONE;
+ is_fake_mcount32 = arm_is_fake_mcount;
break;
case EM_AARCH64:
reltype = R_AARCH64_ABS64;
next prev parent reply other threads:[~2020-01-28 14:31 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-28 14:07 [PATCH 4.19 00/92] 4.19.100-stable review Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 01/92] can, slip: Protect tty->disc_data in write_wakeup and close with RCU Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 02/92] firestream: fix memory leaks Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 03/92] gtp: make sure only SOCK_DGRAM UDP sockets are accepted Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 04/92] ipv6: sr: remove SKB_GSO_IPXIP6 on End.D* actions Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 05/92] net: bcmgenet: Use netif_tx_napi_add() for TX NAPI Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 06/92] net: cxgb3_main: Add CAP_NET_ADMIN check to CHELSIO_GET_MEM Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 07/92] net: ip6_gre: fix moving ip6gre between namespaces Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 08/92] net, ip6_tunnel: fix namespaces move Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 09/92] net, ip_tunnel: " Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 10/92] net: rtnetlink: validate IFLA_MTU attribute in rtnl_create_link() Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 11/92] net_sched: fix datalen for ematch Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 12/92] net-sysfs: Fix reference count leak in rx|netdev_queue_add_kobject Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 13/92] net-sysfs: fix netdev_queue_add_kobject() breakage Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 14/92] net-sysfs: Call dev_hold always in netdev_queue_add_kobject Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 15/92] net-sysfs: Call dev_hold always in rx_queue_add_kobject Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 16/92] net-sysfs: Fix reference count leak Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 17/92] net: usb: lan78xx: Add .ndo_features_check Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 18/92] Revert "udp: do rmem bulk free even if the rx sk queue is empty" Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 19/92] tcp_bbr: improve arithmetic division in bbr_update_bw() Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 20/92] tcp: do not leave dangling pointers in tp->highest_sack Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 21/92] tun: add mutex_unlock() call and napi.skb clearing in tun_get_user() Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 22/92] afs: Fix characters allowed into cell names Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 23/92] hwmon: (adt7475) Make volt2reg return same reg as reg2volt input Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 24/92] hwmon: (core) Do not use device managed functions for memory allocations Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 25/92] PCI: Mark AMD Navi14 GPU rev 0xc5 ATS as broken Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 26/92] tracing: trigger: Replace unneeded RCU-list traversals Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 27/92] Input: keyspan-remote - fix control-message timeouts Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 28/92] Revert "Input: synaptics-rmi4 - dont increment rmiaddr for SMBus transfers" Greg Kroah-Hartman
2020-01-28 14:07 ` Greg Kroah-Hartman [this message]
2020-01-28 14:07 ` [PATCH 4.19 30/92] mmc: tegra: fix SDR50 tuning override Greg Kroah-Hartman
2020-01-28 14:07 ` [PATCH 4.19 31/92] mmc: sdhci: fix minimum clock rate for v3 controller Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 32/92] Documentation: Document arm64 kpti control Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 33/92] Input: pm8xxx-vib - fix handling of separate enable register Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 34/92] Input: sur40 - fix interface sanity checks Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 35/92] Input: gtco - fix endpoint sanity check Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 36/92] Input: aiptek " Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 37/92] Input: pegasus_notetaker " Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 38/92] Input: sun4i-ts - add a check for devm_thermal_zone_of_sensor_register Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 39/92] netfilter: nft_osf: add missing check for DREG attribute Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 40/92] hwmon: (nct7802) Fix voltage limits to wrong registers Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 41/92] scsi: RDMA/isert: Fix a recently introduced regression related to logout Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 42/92] tracing: xen: Ordered comparison of function pointers Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 43/92] do_last(): fetch directory ->i_mode and ->i_uid before its too late Greg Kroah-Hartman
2020-01-31 10:08 ` Rantala, Tommi T. (Nokia - FI/Espoo)
2020-01-31 12:20 ` Al Viro
2020-01-31 13:57 ` Rantala, Tommi T. (Nokia - FI/Espoo)
2020-01-28 14:08 ` [PATCH 4.19 44/92] net/sonic: Add mutual exclusion for accessing shared state Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 45/92] net/sonic: Clear interrupt flags immediately Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 46/92] net/sonic: Use MMIO accessors Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 47/92] net/sonic: Fix interface error stats collection Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 48/92] net/sonic: Fix receive buffer handling Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 49/92] net/sonic: Avoid needless receive descriptor EOL flag updates Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 50/92] net/sonic: Improve receive descriptor status flag check Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 51/92] net/sonic: Fix receive buffer replenishment Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 52/92] net/sonic: Quiesce SONIC before re-initializing descriptor memory Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 53/92] net/sonic: Fix command register usage Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 54/92] net/sonic: Fix CAM initialization Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 55/92] net/sonic: Prevent tx watchdog timeout Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 56/92] tracing: Use hist triggers var_ref array to destroy var_refs Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 57/92] tracing: Remove open-coding of hist trigger var_ref management Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 58/92] tracing: Fix histogram code when expression has same var as value Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 59/92] sd: Fix REQ_OP_ZONE_REPORT completion handling Greg Kroah-Hartman
2020-01-28 18:02 ` Pavel Machek
2020-01-28 18:15 ` Greg Kroah-Hartman
2020-01-29 1:05 ` Damien Le Moal
2020-01-28 14:08 ` [PATCH 4.19 60/92] crypto: geode-aes - switch to skcipher for cbc(aes) fallback Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 61/92] coresight: etb10: Do not call smp_processor_id from preemptible Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 62/92] coresight: tmc-etf: " Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 63/92] libertas: Fix two buffer overflows at parsing bss descriptor Greg Kroah-Hartman
2020-01-29 22:47 ` Pavel Machek
2020-01-28 14:08 ` [PATCH 4.19 64/92] media: v4l2-ioctl.c: zero reserved fields for S/TRY_FMT Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 65/92] scsi: iscsi: Avoid potential deadlock in iscsi_if_rx func Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 66/92] netfilter: ipset: use bitmap infrastructure completely Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 67/92] netfilter: nf_tables: add __nft_chain_type_get() Greg Kroah-Hartman
2020-01-28 18:13 ` Pavel Machek
2020-01-28 14:08 ` [PATCH 4.19 68/92] net/x25: fix nonblocking connect Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 69/92] mm/memory_hotplug: make remove_memory() take the device_hotplug_lock Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 70/92] mm, sparse: drop pgdat_resize_lock in sparse_add/remove_one_section() Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 71/92] mm, sparse: pass nid instead of pgdat to sparse_add_one_section() Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 72/92] drivers/base/memory.c: remove an unnecessary check on NR_MEM_SECTIONS Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 73/92] mm, memory_hotplug: add nid parameter to arch_remove_memory Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 74/92] mm/memory_hotplug: release memory resource after arch_remove_memory() Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 75/92] drivers/base/memory.c: clean up relics in function parameters Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 76/92] mm, memory_hotplug: update a comment in unregister_memory() Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 77/92] mm/memory_hotplug: make unregister_memory_section() never fail Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 78/92] mm/memory_hotplug: make __remove_section() " Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 79/92] powerpc/mm: Fix section mismatch warning Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 80/92] mm/memory_hotplug: make __remove_pages() and arch_remove_memory() never fail Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 88/92] mm/hotplug: kill is_dev_zone() usage in __remove_pages() Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 89/92] drivers/base/node.c: simplify unregister_memory_block_under_nodes() Greg Kroah-Hartman
2020-01-28 14:08 ` [PATCH 4.19 91/92] mm/memory_hotplug: fix try_offline_node() Greg Kroah-Hartman
2020-01-28 14:09 ` [PATCH 4.19 92/92] mm/memory_hotplug: shrink zones when offlining memory Greg Kroah-Hartman
2020-01-28 23:03 ` [PATCH 4.19 00/92] 4.19.100-stable review shuah
2020-01-29 4:54 ` Naresh Kamboju
2020-01-29 11:31 ` Pavel Machek
2020-01-29 12:57 ` Greg Kroah-Hartman
2020-01-29 13:16 ` Jon Hunter
2020-01-29 14:43 ` Guenter Roeck
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=20200128135812.767881410@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=alexander.sverdlin@nokia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rmk+kernel@armlinux.org.uk \
--cc=rostedt@goodmis.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).