From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>
Subject: [PATCH 4.9 96/97] perf probe: Fix wrong address verification
Date: Wed, 22 Jan 2020 10:29:40 +0100 [thread overview]
Message-ID: <20200122092811.399085852@linuxfoundation.org> (raw)
In-Reply-To: <20200122092755.678349497@linuxfoundation.org>
From: Masami Hiramatsu <mhiramat@kernel.org>
commit 07d369857808b7e8e471bbbbb0074a6718f89b31 upstream.
Since there are some DIE which has only ranges instead of the
combination of entrypc/highpc, address verification must use
dwarf_haspc() instead of dwarf_entrypc/dwarf_highpc.
Also, the ranges only DIE will have a partial code in different section
(e.g. unlikely code will be in text.unlikely as "FUNC.cold" symbol). In
that case, we can not use dwarf_entrypc() or die_entrypc(), because the
offset from original DIE can be a minus value.
Instead, this simply gets the symbol and offset from symtab.
Without this patch;
# perf probe -D clear_tasks_mm_cpumask:1
Failed to get entry address of clear_tasks_mm_cpumask
Error: Failed to add events.
And with this patch:
# perf probe -D clear_tasks_mm_cpumask:1
p:probe/clear_tasks_mm_cpumask clear_tasks_mm_cpumask+0
p:probe/clear_tasks_mm_cpumask_1 clear_tasks_mm_cpumask+5
p:probe/clear_tasks_mm_cpumask_2 clear_tasks_mm_cpumask+8
p:probe/clear_tasks_mm_cpumask_3 clear_tasks_mm_cpumask+16
p:probe/clear_tasks_mm_cpumask_4 clear_tasks_mm_cpumask+82
Committer testing:
I managed to reproduce the above:
[root@quaco ~]# perf probe -D clear_tasks_mm_cpumask:1
p:probe/clear_tasks_mm_cpumask _text+919968
p:probe/clear_tasks_mm_cpumask_1 _text+919973
p:probe/clear_tasks_mm_cpumask_2 _text+919976
[root@quaco ~]#
But then when trying to actually put the probe in place, it fails if I
use :0 as the offset:
[root@quaco ~]# perf probe -L clear_tasks_mm_cpumask | head -5
<clear_tasks_mm_cpumask@/usr/src/debug/kernel-5.2.fc30/linux-5.2.18-200.fc30.x86_64/kernel/cpu.c:0>
0 void clear_tasks_mm_cpumask(int cpu)
1 {
2 struct task_struct *p;
[root@quaco ~]# perf probe clear_tasks_mm_cpumask:0
Probe point 'clear_tasks_mm_cpumask' not found.
Error: Failed to add events.
[root@quaco
The next patch is needed to fix this case.
Fixes: 576b523721b7 ("perf probe: Fix probing symbols with optimization suffix")
Reported-by: Arnaldo Carvalho de Melo <acme@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lore.kernel.org/lkml/157199318513.8075.10463906803299647907.stgit@devnote2
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/perf/util/probe-finder.c | 32 ++++++++++----------------------
1 file changed, 10 insertions(+), 22 deletions(-)
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -612,38 +612,26 @@ static int convert_to_trace_point(Dwarf_
const char *function,
struct probe_trace_point *tp)
{
- Dwarf_Addr eaddr, highaddr;
+ Dwarf_Addr eaddr;
GElf_Sym sym;
const char *symbol;
/* Verify the address is correct */
- if (dwarf_entrypc(sp_die, &eaddr) != 0) {
- pr_warning("Failed to get entry address of %s\n",
- dwarf_diename(sp_die));
- return -ENOENT;
- }
- if (dwarf_highpc(sp_die, &highaddr) != 0) {
- pr_warning("Failed to get end address of %s\n",
- dwarf_diename(sp_die));
- return -ENOENT;
- }
- if (paddr > highaddr) {
- pr_warning("Offset specified is greater than size of %s\n",
+ if (!dwarf_haspc(sp_die, paddr)) {
+ pr_warning("Specified offset is out of %s\n",
dwarf_diename(sp_die));
return -EINVAL;
}
- symbol = dwarf_diename(sp_die);
+ /* Try to get actual symbol name from symtab */
+ symbol = dwfl_module_addrsym(mod, paddr, &sym, NULL);
if (!symbol) {
- /* Try to get the symbol name from symtab */
- symbol = dwfl_module_addrsym(mod, paddr, &sym, NULL);
- if (!symbol) {
- pr_warning("Failed to find symbol at 0x%lx\n",
- (unsigned long)paddr);
- return -ENOENT;
- }
- eaddr = sym.st_value;
+ pr_warning("Failed to find symbol at 0x%lx\n",
+ (unsigned long)paddr);
+ return -ENOENT;
}
+ eaddr = sym.st_value;
+
tp->offset = (unsigned long)(paddr - eaddr);
tp->address = (unsigned long)paddr;
tp->symbol = strdup(symbol);
next prev parent reply other threads:[~2020-01-22 9:51 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-22 9:28 [PATCH 4.9 00/97] 4.9.211-stable review Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 01/97] hidraw: Return EPOLLOUT from hidraw_poll Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 02/97] HID: hidraw: Fix returning " Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 03/97] HID: hidraw, uhid: Always report EPOLLOUT Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 04/97] ethtool: reduce stack usage with clang Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 05/97] fs/select: avoid clang stack usage warning Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 06/97] rsi: add fix for crash during assertions Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 07/97] arm64: mm: BUG on unsupported manipulations of live kernel mappings Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 08/97] arm64: dont open code page table entry creation Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 09/97] arm64: mm: Change page table pointer name in p[md]_set_huge() Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 10/97] arm64: Enforce BBM for huge IO/VMAP mappings Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 11/97] arm64: Make sure permission updates happen for pmd/pud Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 12/97] cfg80211/mac80211: make ieee80211_send_layer2_update a public function Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 13/97] mac80211: Do not send Layer 2 Update frame before authorization Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 14/97] media: usb:zr364xx:Fix KASAN:null-ptr-deref Read in zr364xx_vidioc_querycap Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 15/97] wimax: i2400: fix memory leak Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 16/97] wimax: i2400: Fix memory leak in i2400m_op_rfkill_sw_toggle Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 17/97] ext4: fix use-after-free race with debug_want_extra_isize Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 18/97] ext4: add more paranoia checking in ext4_expand_extra_isize handling Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 19/97] dccp: Fix memleak in __feat_register_sp Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 20/97] rtc: mt6397: fix alarm register overwrite Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 21/97] iommu: Remove device link to group on failure Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 22/97] gpio: Fix error message on out-of-range GPIO in lookup table Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 23/97] hsr: reset network header when supervision frame is created Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 24/97] cifs: Adjust indentation in smb2_open_file Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 25/97] RDMA/srpt: Report the SCSI residual to the initiator Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 26/97] scsi: enclosure: Fix stale device oops with hot replug Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 27/97] scsi: sd: Clear sdkp->protection_type if disk is reformatted without PI Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 28/97] platform/x86: asus-wmi: Fix keyboard brightness cannot be set to 0 Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 29/97] iio: imu: adis16480: assign bias value only if operation succeeded Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 30/97] mei: fix modalias documentation Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 31/97] clk: samsung: exynos5420: Preserve CPU clocks configuration during suspend/resume Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 32/97] compat_ioctl: handle SIOCOUTQNSD Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 33/97] PCI/PTM: Remove spurious "d" from granularity message Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 34/97] powerpc/powernv: Disable native PCIe port management Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 35/97] tty: serial: imx: use the sg count from dma_map_sg Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 36/97] tty: serial: pch_uart: correct usage of dma_unmap_sg Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 37/97] media: exynos4-is: Fix recursive locking in isp_video_release() Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 38/97] mtd: spi-nor: fix silent truncation in spi_nor_read() Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 39/97] spi: atmel: fix handling of cs_change set on non-last xfer Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 40/97] rtlwifi: Remove unnecessary NULL check in rtl_regd_init Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 41/97] f2fs: fix potential overflow Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 42/97] rtc: msm6242: Fix reading of 10-hour digit Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 43/97] gpio: mpc8xxx: Add platform device to gpiochip->parent Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 44/97] scsi: libcxgbi: fix NULL pointer dereference in cxgbi_device_destroy() Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 45/97] rseq/selftests: Turn off timeout setting Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 46/97] MIPS: Prevent link failure with kcov instrumentation Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 47/97] ioat: ioat_alloc_ring() failure handling Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 48/97] hexagon: parenthesize registers in asm predicates Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 49/97] hexagon: work around compiler crash Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 50/97] ocfs2: call journal flush to mark journal as empty after journal recovery when mount Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 51/97] dt-bindings: reset: meson8b: fix duplicate reset IDs Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 52/97] clk: Dont try to enable critical clocks if prepare failed Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 53/97] ALSA: seq: Fix racy access for queue timer in proc read Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 54/97] Fix built-in early-load Intel microcode alignment Greg Kroah-Hartman
2020-01-22 9:28 ` [PATCH 4.9 55/97] block: fix an integer overflow in logical block size Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 56/97] iio: buffer: align the size of scan bytes to size of the largest element Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 57/97] USB: serial: simple: Add Motorola Solutions TETRA MTP3xxx and MTP85xx Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 58/97] USB: serial: opticon: fix control-message timeouts Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 59/97] USB: serial: suppress driver bind attributes Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 60/97] USB: serial: ch341: handle unbound port at reset_resume Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 61/97] USB: serial: io_edgeport: add missing active-port sanity check Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 62/97] USB: serial: quatech2: handle unbound ports Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 63/97] scsi: mptfusion: Fix double fetch bug in ioctl Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 64/97] usb: core: hub: Improved device recognition on remote wakeup Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 65/97] x86/efistub: Disable paging at mixed mode entry Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 66/97] perf hists: Fix variable names inconsistency in hists__for_each() macro Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 67/97] perf report: Fix incorrectly added dimensions as switch perf data file Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 68/97] mm/page-writeback.c: avoid potential division by zero in wb_min_max_ratio() Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 69/97] net: stmmac: 16KB buffer must be 16 byte aligned Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 70/97] net: stmmac: Enable 16KB buffer size Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 71/97] USB: serial: io_edgeport: use irqsave() in USBs complete callback Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 72/97] USB: serial: io_edgeport: handle unbound ports on URB completion Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 73/97] USB: serial: keyspan: handle unbound ports Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 74/97] scsi: fnic: use kernels %pM format option to print MAC Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 75/97] scsi: fnic: fix invalid stack access Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 76/97] arm64: dts: agilex/stratix10: fix pmu interrupt numbers Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 77/97] cfg80211: fix page refcount issue in A-MSDU decap Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 78/97] netfilter: fix a use-after-free in mtype_destroy() Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 79/97] netfilter: arp_tables: init netns pointer in xt_tgdtor_param struct Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 80/97] batman-adv: Fix DAT candidate selection on little endian systems Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 81/97] macvlan: use skb_reset_mac_header() in macvlan_queue_xmit() Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 82/97] net: dsa: tag_qca: fix doubled Tx statistics Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 83/97] net/wan/fsl_ucc_hdlc: fix out of bounds write on array utdm_info Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 84/97] r8152: add missing endpoint sanity check Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 85/97] tcp: fix marked lost packets not being retransmitted Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 86/97] net: usb: lan78xx: limit size of local TSO packets Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 87/97] xen/blkfront: Adjust indentation in xlvbd_alloc_gendisk Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 88/97] cw1200: Fix a signedness bug in cw1200_load_firmware() Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 89/97] cfg80211: check for set_wiphy_params Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 90/97] reiserfs: fix handling of -EOPNOTSUPP in reiserfs_for_each_xattr Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 91/97] scsi: esas2r: unlock on error in esas2r_nvram_read_direct() Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 92/97] scsi: qla4xxx: fix double free bug Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 93/97] scsi: bnx2i: fix potential use after free Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 94/97] scsi: target: core: Fix a pr_debug() argument Greg Kroah-Hartman
2020-01-22 9:29 ` [PATCH 4.9 95/97] scsi: core: scsi_trace: Use get_unaligned_be*() Greg Kroah-Hartman
2020-01-22 9:29 ` Greg Kroah-Hartman [this message]
2020-01-22 9:29 ` [PATCH 4.9 97/97] regulator: ab8500: Remove SYSCLKREQ from enum ab8505_regulator_id Greg Kroah-Hartman
2020-01-22 14:36 ` [PATCH 4.9 00/97] 4.9.211-stable review Naresh Kamboju
2020-01-22 14:57 ` Jon Hunter
2020-01-22 18:59 ` Guenter Roeck
2020-01-22 20:52 ` shuah
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=20200122092811.399085852@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=acme@kernel.org \
--cc=acme@redhat.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=namhyung@kernel.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).