From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Marc Zyngier <maz@kernel.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Will Deacon <will@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 4.19 35/52] kallsyms: Don't let kallsyms_lookup_size_offset() fail on retrieving the first symbol
Date: Wed, 4 Sep 2019 11:59:47 -0400 [thread overview]
Message-ID: <20190904160004.3671-35-sashal@kernel.org> (raw)
In-Reply-To: <20190904160004.3671-1-sashal@kernel.org>
From: Marc Zyngier <maz@kernel.org>
[ Upstream commit 2a1a3fa0f29270583f0e6e3100d609e09697add1 ]
An arm64 kernel configured with
CONFIG_KPROBES=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_KALLSYMS_BASE_RELATIVE=y
reports the following kprobe failure:
[ 0.032677] kprobes: failed to populate blacklist: -22
[ 0.033376] Please take care of using kprobes.
It appears that kprobe fails to retrieve the symbol at address
0xffff000010081000, despite this symbol being in System.map:
ffff000010081000 T __exception_text_start
This symbol is part of the first group of aliases in the
kallsyms_offsets array (symbol names generated using ugly hacks in
scripts/kallsyms.c):
kallsyms_offsets:
.long 0x1000 // do_undefinstr
.long 0x1000 // efi_header_end
.long 0x1000 // _stext
.long 0x1000 // __exception_text_start
.long 0x12b0 // do_cp15instr
Looking at the implementation of get_symbol_pos(), it returns the
lowest index for aliasing symbols. In this case, it return 0.
But kallsyms_lookup_size_offset() considers 0 as a failure, which
is obviously wrong (there is definitely a valid symbol living there).
In turn, the kprobe blacklisting stops abruptly, hence the original
error.
A CONFIG_KALLSYMS_ALL kernel wouldn't fail as there is always
some random symbols at the beginning of this array, which are never
looked up via kallsyms_lookup_size_offset.
Fix it by considering that get_symbol_pos() is always successful
(which is consistent with the other uses of this function).
Fixes: ffc5089196446 ("[PATCH] Create kallsyms_lookup_size_offset()")
Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/kallsyms.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c
index 02a0b01380d8e..ed87dac8378cc 100644
--- a/kernel/kallsyms.c
+++ b/kernel/kallsyms.c
@@ -262,8 +262,10 @@ int kallsyms_lookup_size_offset(unsigned long addr, unsigned long *symbolsize,
{
char namebuf[KSYM_NAME_LEN];
- if (is_ksym_addr(addr))
- return !!get_symbol_pos(addr, symbolsize, offset);
+ if (is_ksym_addr(addr)) {
+ get_symbol_pos(addr, symbolsize, offset);
+ return 1;
+ }
return !!module_address_lookup(addr, symbolsize, offset, NULL, namebuf) ||
!!__bpf_address_lookup(addr, symbolsize, offset, namebuf);
}
--
2.20.1
next prev parent reply other threads:[~2019-09-04 16:10 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-04 15:59 [PATCH AUTOSEL 4.19 01/52] ieee802154: hwsim: Fix error handle path in hwsim_init_module Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 02/52] ieee802154: hwsim: unregister hw while hwsim_subscribe_all_others fails Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 03/52] ARM: dts: am57xx: Disable voltage switching for SD card Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 04/52] ARM: OMAP2+: Fix missing SYSC_HAS_RESET_STATUS for dra7 epwmss Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 05/52] bus: ti-sysc: Fix using configured sysc mask value Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 06/52] s390/bpf: fix lcgr instruction encoding Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 07/52] ARM: OMAP2+: Fix omap4 errata warning on other SoCs Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 08/52] ARM: dts: dra74x: Fix iodelay configuration for mmc3 Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 09/52] ARM: OMAP1: ams-delta-fiq: Fix missing irq_ack Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 10/52] bus: ti-sysc: Simplify cleanup upon failures in sysc_probe() Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 11/52] s390/bpf: use 32-bit index for tail calls Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 12/52] batman-adv: fix uninit-value in batadv_netlink_get_ifindex() Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 13/52] selftests/bpf: fix "bind{4, 6} deny specific IP & port" on s390 Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 14/52] tools: bpftool: close prog FD before exit on showing a single program Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 15/52] fpga: altera-ps-spi: Fix getting of optional confd gpio Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 16/52] netfilter: ebtables: Fix argument order to ADD_COUNTER Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 17/52] netfilter: nft_flow_offload: missing netlink attribute policy Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 18/52] netfilter: xt_nfacct: Fix alignment mismatch in xt_nfacct_match_info Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 19/52] NFSv4: Fix return values for nfs4_file_open() Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 20/52] NFSv4: Fix return value in nfs_finish_open() Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 21/52] NFS: Fix initialisation of I/O result struct in nfs_pgio_rpcsetup Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 22/52] Kconfig: Fix the reference to the IDT77105 Phy driver in the description of ATM_NICSTAR_USE_IDT77105 Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 23/52] xdp: unpin xdp umem pages in error path Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 24/52] qed: Add cleanup in qed_slowpath_start() Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 25/52] ARM: 8874/1: mm: only adjust sections of valid mm structures Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 26/52] batman-adv: Only read OGM tvlv_len after buffer len check Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 27/52] batman-adv: Only read OGM2 " Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 28/52] bpf: allow narrow loads of some sk_reuseport_md fields with offset > 0 Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 29/52] r8152: Set memory to all 0xFFs on failed reg reads Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 30/52] x86/apic: Fix arch_dynirq_lower_bound() bug for DT enabled machines Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 31/52] netfilter: xt_physdev: Fix spurious error message in physdev_mt_check Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 32/52] netfilter: nf_conntrack_ftp: Fix debug output Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 33/52] NFSv2: Fix eof handling Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 34/52] NFSv2: Fix write regression Sasha Levin
2019-09-04 15:59 ` Sasha Levin [this message]
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 36/52] cifs: set domainName when a domain-key is used in multiuser Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 37/52] cifs: Use kzfree() to zero out the password Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 38/52] x86/build: Add -Wnoaddress-of-packed-member to REALMODE_CFLAGS, to silence GCC9 build warning Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 39/52] usb: host: xhci-tegra: Set DMA mask correctly Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 40/52] ARM: 8901/1: add a criteria for pfn_valid of arm Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 41/52] ibmvnic: Do not process reset during or after device removal Sasha Levin
2019-09-04 15:59 ` Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 42/52] sky2: Disable MSI on yet another ASUS boards (P6Xxxx) Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 43/52] i2c: designware: Synchronize IRQs when unregistering slave client Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 44/52] perf/x86/intel: Restrict period on Nehalem Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 45/52] perf/x86/amd/ibs: Fix sample bias for dispatched micro-ops Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 46/52] amd-xgbe: Fix error path in xgbe_mod_init() Sasha Levin
2019-09-04 15:59 ` [PATCH AUTOSEL 4.19 47/52] net: stmmac: dwmac-rk: Don't fail if phy regulator is absent Sasha Levin
2019-09-04 16:00 ` [PATCH AUTOSEL 4.19 48/52] tools/power x86_energy_perf_policy: Fix "uninitialized variable" warnings at -O2 Sasha Levin
2019-09-04 16:00 ` [PATCH AUTOSEL 4.19 49/52] tools/power x86_energy_perf_policy: Fix argument parsing Sasha Levin
2019-09-04 16:00 ` [PATCH AUTOSEL 4.19 50/52] tools/power turbostat: fix buffer overrun Sasha Levin
2019-09-04 16:00 ` [PATCH AUTOSEL 4.19 51/52] net: aquantia: fix out of memory condition on rx side Sasha Levin
2019-09-04 16:00 ` [PATCH AUTOSEL 4.19 52/52] net: seeq: Fix the function used to release some memory in an error handling path 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=20190904160004.3671-35-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=acme@redhat.com \
--cc=catalin.marinas@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=mhiramat@kernel.org \
--cc=peterz@infradead.org \
--cc=stable@vger.kernel.org \
--cc=will@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.