From nobody Mon Dec 1 22:06:09 2025 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95E75241C8C for ; Fri, 28 Nov 2025 13:59:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338384; cv=none; b=qmuhYObWoTuKomBmPinynr8sqz+EQkDA+Evzaz8zk08aSbhaUvYBSg3J/xKDsm724WOF59D0k3CHrqWfxxHhExTVe/fIo0ntgsNcDsQgmElBROTF5Q7W1C9MC+UW6UFzmXlAwchBshwcDSW+l+0kMr0wtYEaw6LRA53Vxa7yW4w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338384; c=relaxed/simple; bh=yETNoQUjTy/o4hRd3JCjS3DSwBeAxogtUnskeoFG93U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AP+cPT7RvsI3eLhj2Czne6KSgERPuE4Ll0WlpGxbgJuYubjQuYSedLIBySIeKjX9Q0r2lp2Q6OBO4+43Rtgz+373wP9z0+2drDNb32me7DKMuhkboW8cPTDIQGid2pSpIsbrPHlhMsrDCzpq1JPLmWKApkcEc564TITZLgf2Zkk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=lHga0k35; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=ntHNc/jV; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="lHga0k35"; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="ntHNc/jV" Received: from pathway.suse.cz (unknown [IPv6:2a07:de40:b2bf:1b::12bd]) by smtp-out2.suse.de (Postfix) with ESMTP id 23B8B5BDA8; Fri, 28 Nov 2025 13:59:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338380; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vC80OjUEAAi7F/7wFyywwekDzm2PMhYQJkvZRfqjmCE=; b=lHga0k35Wzpi9TRyAVphoVKW5c+VRlQaewwDSQR0BdIwToav2GL2HTUyT3vPZ0ziPJdbvN XbEo7qdPzjCwyv7MTxN7ZAJrY9ER1YTQri1tWkxcKA11NZEPoZHDNH4iT8xTtDZHtJdKkx LygrdKVDXeW3FQK2Qiyf1IaaJoQofgs= Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.com header.s=susede1 header.b="ntHNc/jV" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338379; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vC80OjUEAAi7F/7wFyywwekDzm2PMhYQJkvZRfqjmCE=; b=ntHNc/jVPqu1hZa0LMTVFfwWadaPPmMXmJrWID0eyNnvKUzWmYs7Q3VMxtIyYpkYz4qtpn Bq5AQ2SLZZl+hSS7oXOnFdyYZTDupwr7bYfRJLwMWivN72yTCucXYE+UQ75+alxQCNqjUN vNhYEcGGpsMImm5sr2gU7LFSi8Q6iv0= From: Petr Mladek To: Petr Pavlu , Steven Rostedt , Alexei Starovoitov , Andrew Morton , Kees Cook Cc: Aaron Tomlin , Daniel Borkmann , John Fastabend , Masami Hiramatsu , Mark Rutland , Luis Chamberlain , Daniel Gomez , Sami Tolvanen , linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-modules@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Petr Mladek Subject: [PATCH v3 1/7] kallsyms: Clean up @namebuf initialization in kallsyms_lookup_buildid() Date: Fri, 28 Nov 2025 14:59:14 +0100 Message-ID: <20251128135920.217303-2-pmladek@suse.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251128135920.217303-1-pmladek@suse.com> References: <20251128135920.217303-1-pmladek@suse.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [15.13 / 50.00]; SPAM_FLAG(5.00)[]; NEURAL_SPAM_LONG(3.50)[1.000]; BAYES_HAM(-3.00)[99.99%]; HFILTER_HOSTNAME_UNKNOWN(2.50)[]; RDNS_NONE(2.00)[]; SUSPICIOUS_RECIPS(1.50)[]; ONCE_RECEIVED(1.20)[]; MID_CONTAINS_FROM(1.00)[]; HFILTER_HELO_IP_A(1.00)[pathway.suse.cz]; R_MISSING_CHARSET(0.50)[]; HFILTER_HELO_NORES_A_OR_MX(0.30)[pathway.suse.cz]; R_DKIM_ALLOW(-0.20)[suse.com:s=susede1]; MIME_GOOD(-0.10)[text/plain]; NEURAL_HAM_SHORT(-0.06)[-0.321]; MX_GOOD(-0.01)[]; FROM_EQ_ENVFROM(0.00)[]; DIRECT_TO_MX(0.00)[git-send-email 2.52.0]; TAGGED_RCPT(0.00)[]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCPT_COUNT_TWELVE(0.00)[18]; FROM_HAS_DN(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:dkim,suse.com:email]; DNSWL_BLOCKED(0.00)[2a07:de40:b2bf:1b::12bd:from]; DKIM_TRACE(0.00)[suse.com:+]; R_RATELIMIT(0.00)[to_ip_from(RL6jpahug3dm5x93mmnjuwit91)]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FREEMAIL_CC(0.00)[atomlin.com,iogearbox.net,gmail.com,kernel.org,arm.com,google.com,vger.kernel.org,suse.com]; TO_DN_SOME(0.00)[]; RCVD_COUNT_ZERO(0.00)[0]; FREEMAIL_ENVRCPT(0.00)[gmail.com] X-Spamd-Bar: +++++++++++++++ X-Rspamd-Queue-Id: 23B8B5BDA8 X-Spam-Flag: YES X-Spam-Score: 15.13 X-Spam-Level: *************** X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Rspamd-Action: add header X-Spam: Yes Content-Type: text/plain; charset="utf-8" The function kallsyms_lookup_buildid() initializes the given @namebuf by clearing the first and the last byte. It is not clear why. The 1st byte makes sense because some callers ignore the return code and expect that the buffer contains a valid string, for example: - function_stat_show() - kallsyms_lookup() - kallsyms_lookup_buildid() The initialization of the last byte does not make much sense because it can later be overwritten. Fortunately, it seems that all called functions behave correctly: - kallsyms_expand_symbol() explicitly adds the trailing '\0' at the end of the function. - All *__address_lookup() functions either use the safe strscpy() or they do not touch the buffer at all. Document the reason for clearing the first byte. And remove the useless initialization of the last byte. Reviewed-by: Aaron Tomlin Signed-off-by: Petr Mladek --- kernel/kallsyms.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index 1e7635864124..e08c1e57fc0d 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -352,7 +352,12 @@ static int kallsyms_lookup_buildid(unsigned long addr, { int ret; =20 - namebuf[KSYM_NAME_LEN - 1] =3D 0; + /* + * kallsyms_lookus() returns pointer to namebuf on success and + * NULL on error. But some callers ignore the return value. + * Instead they expect @namebuf filled either with valid + * or empty string. + */ namebuf[0] =3D 0; =20 if (is_ksym_addr(addr)) { --=20 2.52.0 From nobody Mon Dec 1 22:06:09 2025 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CBE86329C77 for ; Fri, 28 Nov 2025 13:59:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338395; cv=none; b=bxI44v7b3uk4XsxBx/p76f+zcAJB2N26MbGmQelSCqKsTmpE5lQQ3RP7ZFphPGtQDh8GH+HC2c03vZAxWp9E3okZWcJGZNISr4gGkJVEe/sUQb+7w2kZ9cjg69zTd0lBoSWFZhMI/P9f/s2noPf+PQZBRVGZiWu9hnUQwxTi2tA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338395; c=relaxed/simple; bh=egRmFN/mqkdCL+RNx/ncaQMejM8Y4t01FIBSpu97yyY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fX85ApXCw3w22sYuCTBxDdX83a8BvVF1srrWrtXH0mOxJeOtYct2+m6ljopPvtzOr2G87IyG9c0KA1nOtug0BEzfceerc2sdtMzmcSEpLNwI9vzOc8fi/B6SKhkpnP204cQ/cZCuoqHnC5HvwM3NSK4aIZQPRMU/78ikAP5vqbw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=f/3PZybt; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=f/3PZybt; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="f/3PZybt"; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="f/3PZybt" Received: from pathway.suse.cz (unknown [IPv6:2a07:de40:b2bf:1b::12bd]) by smtp-out2.suse.de (Postfix) with ESMTP id F3DAE5BDB0; Fri, 28 Nov 2025 13:59:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338391; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wiodvAhzYIk9+zlQJsEhcdKaOUEce1EkMu5DWzSTrSg=; b=f/3PZybtlZqdQgEx6Sh3Ekra8GRzqA+pzu5CupQcd7pk/sBDAfQOA2hrKwNi/A3IBoprna u93ubP711myK7eQA2UoDgnlRPR7Fy7jZc7eLgCKWa7Tae/Tqr8I8c6JNGv6aOrqSG5JBSZ QL60aBh5XagNSKLn2v+mnPDZW4GcYoc= Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.com header.s=susede1 header.b="f/3PZybt" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338391; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wiodvAhzYIk9+zlQJsEhcdKaOUEce1EkMu5DWzSTrSg=; b=f/3PZybtlZqdQgEx6Sh3Ekra8GRzqA+pzu5CupQcd7pk/sBDAfQOA2hrKwNi/A3IBoprna u93ubP711myK7eQA2UoDgnlRPR7Fy7jZc7eLgCKWa7Tae/Tqr8I8c6JNGv6aOrqSG5JBSZ QL60aBh5XagNSKLn2v+mnPDZW4GcYoc= From: Petr Mladek To: Petr Pavlu , Steven Rostedt , Alexei Starovoitov , Andrew Morton , Kees Cook Cc: Aaron Tomlin , Daniel Borkmann , John Fastabend , Masami Hiramatsu , Mark Rutland , Luis Chamberlain , Daniel Gomez , Sami Tolvanen , linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-modules@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Petr Mladek Subject: [PATCH v3 2/7] kallsyms: Clean up modname and modbuildid initialization in kallsyms_lookup_buildid() Date: Fri, 28 Nov 2025 14:59:15 +0100 Message-ID: <20251128135920.217303-3-pmladek@suse.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251128135920.217303-1-pmladek@suse.com> References: <20251128135920.217303-1-pmladek@suse.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spam-Flag: YES X-Spam-Score: 15.12 X-Spam-Level: *************** X-Rspamd-Server: rspamd1.dmz-prg2.suse.org X-Spamd-Bar: +++++++++++++++ X-Rspamd-Queue-Id: F3DAE5BDB0 X-Rspamd-Action: add header X-Spamd-Result: default: False [15.12 / 50.00]; SPAM_FLAG(5.00)[]; NEURAL_SPAM_LONG(3.50)[1.000]; BAYES_HAM(-3.00)[99.99%]; HFILTER_HOSTNAME_UNKNOWN(2.50)[]; RDNS_NONE(2.00)[]; SUSPICIOUS_RECIPS(1.50)[]; ONCE_RECEIVED(1.20)[]; HFILTER_HELO_IP_A(1.00)[pathway.suse.cz]; MID_CONTAINS_FROM(1.00)[]; R_MISSING_CHARSET(0.50)[]; HFILTER_HELO_NORES_A_OR_MX(0.30)[pathway.suse.cz]; R_DKIM_ALLOW(-0.20)[suse.com:s=susede1]; MIME_GOOD(-0.10)[text/plain]; NEURAL_HAM_SHORT(-0.07)[-0.332]; MX_GOOD(-0.01)[]; FUZZY_RATELIMITED(0.00)[rspamd.com]; DIRECT_TO_MX(0.00)[git-send-email 2.52.0]; FROM_EQ_ENVFROM(0.00)[]; ARC_NA(0.00)[]; RCPT_COUNT_TWELVE(0.00)[18]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; MIME_TRACE(0.00)[0:+]; FROM_HAS_DN(0.00)[]; RCVD_COUNT_ZERO(0.00)[0]; TAGGED_RCPT(0.00)[]; DKIM_TRACE(0.00)[suse.com:+]; R_RATELIMIT(0.00)[to_ip_from(RL6jpahug3dm5x93mmnjuwit91)]; DWL_DNSWL_BLOCKED(0.00)[suse.com:dkim]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,suse.com:dkim]; FREEMAIL_CC(0.00)[atomlin.com,iogearbox.net,gmail.com,kernel.org,arm.com,google.com,vger.kernel.org,suse.com]; DNSWL_BLOCKED(0.00)[2a07:de40:b2bf:1b::12bd:from]; TO_DN_SOME(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com] X-Spam: Yes Content-Type: text/plain; charset="utf-8" The @modname and @modbuildid optional return parameters are set only when the symbol is in a module. Always initialize them so that they do not need to be cleared when the module is not in a module. It simplifies the logic and makes the code even slightly more safe. Note that bpf_address_lookup() function will get updated in a separate patch. Signed-off-by: Petr Mladek --- kernel/kallsyms.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index e08c1e57fc0d..ffb64eaa0505 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -359,6 +359,14 @@ static int kallsyms_lookup_buildid(unsigned long addr, * or empty string. */ namebuf[0] =3D 0; + /* + * Initialize the module-related return values. They are not set + * when the symbol is in vmlinux or it is a bpf address. + */ + if (modname) + *modname =3D NULL; + if (modbuildid) + *modbuildid =3D NULL; =20 if (is_ksym_addr(addr)) { unsigned long pos; @@ -367,10 +375,6 @@ static int kallsyms_lookup_buildid(unsigned long addr, /* Grab name */ kallsyms_expand_symbol(get_symbol_offset(pos), namebuf, KSYM_NAME_LEN); - if (modname) - *modname =3D NULL; - if (modbuildid) - *modbuildid =3D NULL; =20 return strlen(namebuf); } --=20 2.52.0 From nobody Mon Dec 1 22:06:09 2025 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 700BD32E752 for ; Fri, 28 Nov 2025 14:00:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338405; cv=none; b=XozzlpJOPVtJwOxCjUZmAhS4mlG1TQvmaBAIYwqbBKPuGlBCEu7wTMJ71Hxc6K8vyQE3+KpydWrqExzd0FKwpKOFiDFJpROdzesnMQ+yTBwhNzijHHmZGh49lSM0iEOx+wN3/HkK9E5CBy8PXfke7UG6raGhCoUeIzomftZHLGE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338405; c=relaxed/simple; bh=jMdGIaiNjsaJNWRxjHYVRP95WrGsTmB+8CyF8UuaBss=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o1CqIelTS0Tcr8+3vN4xTDsBgchUwoOqX/HEVjrsVn7Q59KWK+BUBCa6a5MXiRHt+qi/rizUh2vCH49GUuGZMCMbaIkHFBujvY+aNniIHKu4mNpADJvqI4BRFmUKYFnvMSIPo8BvkbiGByCq4fkN4DMEiRkTT7UetgSONLOjeBo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=KYpEE3s0; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=KYpEE3s0; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="KYpEE3s0"; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="KYpEE3s0" Received: from pathway.suse.cz (unknown [IPv6:2a07:de40:b2bf:1b::12bd]) by smtp-out2.suse.de (Postfix) with ESMTP id 7E2115BEA6; Fri, 28 Nov 2025 14:00:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338401; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wylU3OY7fMN/uQhBQWrcaA+DSc1Nc4S6NVrRKYD1sjY=; b=KYpEE3s0bA/Rml6wDkBS8181pIPAMFmbfWnNSgCW3FBtwp07xXVmg2E4inVsWuZE+OueQb Wifil7ZXEsP3GdwV47DUeLPzK/7tx+IiSWdGRN5igxUKprm2zFExBVRWI92SOmo+Ip++uF 1EpBSX+A/vLFPeDZGrK8KzF1FsWD+SU= Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.com header.s=susede1 header.b=KYpEE3s0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338401; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wylU3OY7fMN/uQhBQWrcaA+DSc1Nc4S6NVrRKYD1sjY=; b=KYpEE3s0bA/Rml6wDkBS8181pIPAMFmbfWnNSgCW3FBtwp07xXVmg2E4inVsWuZE+OueQb Wifil7ZXEsP3GdwV47DUeLPzK/7tx+IiSWdGRN5igxUKprm2zFExBVRWI92SOmo+Ip++uF 1EpBSX+A/vLFPeDZGrK8KzF1FsWD+SU= From: Petr Mladek To: Petr Pavlu , Steven Rostedt , Alexei Starovoitov , Andrew Morton , Kees Cook Cc: Aaron Tomlin , Daniel Borkmann , John Fastabend , Masami Hiramatsu , Mark Rutland , Luis Chamberlain , Daniel Gomez , Sami Tolvanen , linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-modules@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Petr Mladek , Daniel Gomez Subject: [PATCH v3 3/7] module: Add helper function for reading module_buildid() Date: Fri, 28 Nov 2025 14:59:16 +0100 Message-ID: <20251128135920.217303-4-pmladek@suse.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251128135920.217303-1-pmladek@suse.com> References: <20251128135920.217303-1-pmladek@suse.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [15.12 / 50.00]; SPAM_FLAG(5.00)[]; NEURAL_SPAM_LONG(3.50)[1.000]; BAYES_HAM(-3.00)[100.00%]; HFILTER_HOSTNAME_UNKNOWN(2.50)[]; RDNS_NONE(2.00)[]; SUSPICIOUS_RECIPS(1.50)[]; ONCE_RECEIVED(1.20)[]; HFILTER_HELO_IP_A(1.00)[pathway.suse.cz]; MID_CONTAINS_FROM(1.00)[]; R_MISSING_CHARSET(0.50)[]; HFILTER_HELO_NORES_A_OR_MX(0.30)[pathway.suse.cz]; R_DKIM_ALLOW(-0.20)[suse.com:s=susede1]; MIME_GOOD(-0.10)[text/plain]; NEURAL_HAM_SHORT(-0.07)[-0.374]; MX_GOOD(-0.01)[]; ARC_NA(0.00)[]; DIRECT_TO_MX(0.00)[git-send-email 2.52.0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FROM_HAS_DN(0.00)[]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; RCPT_COUNT_TWELVE(0.00)[19]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_COUNT_ZERO(0.00)[0]; TAGGED_RCPT(0.00)[]; FREEMAIL_CC(0.00)[atomlin.com,iogearbox.net,gmail.com,kernel.org,arm.com,google.com,vger.kernel.org,suse.com,samsung.com]; DKIM_TRACE(0.00)[suse.com:+]; R_RATELIMIT(0.00)[to_ip_from(RL6jpahug3dm5x93mmnjuwit91)]; DBL_BLOCKED_OPENRESOLVER(0.00)[samsung.com:email,suse.com:mid,suse.com:dkim,suse.com:email,pathway.suse.cz:helo]; TO_DN_SOME(0.00)[]; DNSWL_BLOCKED(0.00)[2a07:de40:b2bf:1b::12bd:from]; SPAMHAUS_XBL(0.00)[2a07:de40:b2bf:1b::12bd:from]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com] X-Spamd-Bar: +++++++++++++++ X-Rspamd-Queue-Id: 7E2115BEA6 X-Spam-Flag: YES X-Spam-Score: 15.12 X-Spam-Level: *************** X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Rspamd-Action: add header X-Spam: Yes Content-Type: text/plain; charset="utf-8" Add a helper function for reading the optional "build_id" member of struct module. It is going to be used also in ftrace_mod_address_lookup(). Use "#ifdef" instead of "#if IS_ENABLED()" to match the declaration of the optional field in struct module. Reviewed-by: Daniel Gomez Reviewed-by: Petr Pavlu Signed-off-by: Petr Mladek --- include/linux/module.h | 9 +++++++++ kernel/module/kallsyms.c | 9 ++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/include/linux/module.h b/include/linux/module.h index e135cc79acee..4decae2b1675 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -747,6 +747,15 @@ static inline void __module_get(struct module *module) __mod ? __mod->name : "kernel"; \ }) =20 +static inline const unsigned char *module_buildid(struct module *mod) +{ +#ifdef CONFIG_STACKTRACE_BUILD_ID + return mod->build_id; +#else + return NULL; +#endif +} + /* Dereference module function descriptor */ void *dereference_module_function_descriptor(struct module *mod, void *ptr= ); =20 diff --git a/kernel/module/kallsyms.c b/kernel/module/kallsyms.c index 00a60796327c..0fc11e45df9b 100644 --- a/kernel/module/kallsyms.c +++ b/kernel/module/kallsyms.c @@ -334,13 +334,8 @@ int module_address_lookup(unsigned long addr, if (mod) { if (modname) *modname =3D mod->name; - if (modbuildid) { -#if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID) - *modbuildid =3D mod->build_id; -#else - *modbuildid =3D NULL; -#endif - } + if (modbuildid) + *modbuildid =3D module_buildid(mod); =20 sym =3D find_kallsyms_symbol(mod, addr, size, offset); =20 --=20 2.52.0 From nobody Mon Dec 1 22:06:09 2025 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9194C32862D for ; Fri, 28 Nov 2025 14:00:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338417; cv=none; b=DnGIoFusLBROXKli7MB57JXuqsQChrPlVzx1qnaOScJeyOD4aL2mMybwoRhHK/WJ5tzoT4jiIe9YwdZmLqugJAdSsCojrGuCVuF9iaTieYm/7kRfi5KpgKcgqiNUlStk+aBtJPSmqvlF9xGEXpigzSY2yfH/bD6j4zbE4EHwSdU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338417; c=relaxed/simple; bh=F5Pds+N66g7N4Rp9cXgOCPs4SkAfIpn1OJikkLIjusw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ODZdRgiinb8PtH0GTcNB029zyLBi9uv6bLeu9mxYiJqSdi4Pin+SFXiBc3Go0ZBo4gHLg/IP5H8Pt02li+dnS4/lGqRhCOzsgyCcaRB0znNkf8p5OJyzqeH6xwCeMpT9/v38txQnAuqExCQ/FHK8xNVvdA85gNITmhGXMLODGlg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=UZbypL4L; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=V7F7arhp; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="UZbypL4L"; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="V7F7arhp" Received: from pathway.suse.cz (unknown [IPv6:2a07:de40:b2bf:1b::12bd]) by smtp-out2.suse.de (Postfix) with ESMTP id 2DF4C5BD55; Fri, 28 Nov 2025 14:00:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338413; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DXn+Ao4LsiEC7RPdi4UpjDJUsDXpi2W8dXd3l42r+bc=; b=UZbypL4LYIp4k6eMcqMe4er9+UlMHErwQFHcUIFqhBXuUgenTzY4x4P1alvvrVkIdbumSm YsXYmUbFYYsVq6o2sjozDkPlgr3m7sSsIj/ouDdyEH4zyPd1GWeAy2NT71CzrbgTuLDRQS XfjDZJh16qGq92Tl7Hj9qz1FwAOUTxY= Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.com header.s=susede1 header.b=V7F7arhp DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338412; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DXn+Ao4LsiEC7RPdi4UpjDJUsDXpi2W8dXd3l42r+bc=; b=V7F7arhp2cFCDaR3InsTvE0sul7AtKzLHzsU4LN9ZWLYsYJ5UI9lnEVqpKzxZ00UgRXJYP 8PGZC4jxarETqUVyhtMIoEzpx7uE9oCpmOWm27n/KTePaLrrYOZ31YncbAWfZLbCUYqVCo 7vZ9IP3WAfHQ9qDstBC7sNTAxDbrCT0= From: Petr Mladek To: Petr Pavlu , Steven Rostedt , Alexei Starovoitov , Andrew Morton , Kees Cook Cc: Aaron Tomlin , Daniel Borkmann , John Fastabend , Masami Hiramatsu , Mark Rutland , Luis Chamberlain , Daniel Gomez , Sami Tolvanen , linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-modules@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Petr Mladek Subject: [PATCH v3 4/7] kallsyms: Cleanup code for appending the module buildid Date: Fri, 28 Nov 2025 14:59:17 +0100 Message-ID: <20251128135920.217303-5-pmladek@suse.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251128135920.217303-1-pmladek@suse.com> References: <20251128135920.217303-1-pmladek@suse.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [15.12 / 50.00]; SPAM_FLAG(5.00)[]; NEURAL_SPAM_LONG(3.50)[1.000]; BAYES_HAM(-3.00)[100.00%]; HFILTER_HOSTNAME_UNKNOWN(2.50)[]; RDNS_NONE(2.00)[]; SUSPICIOUS_RECIPS(1.50)[]; ONCE_RECEIVED(1.20)[]; HFILTER_HELO_IP_A(1.00)[pathway.suse.cz]; MID_CONTAINS_FROM(1.00)[]; R_MISSING_CHARSET(0.50)[]; HFILTER_HELO_NORES_A_OR_MX(0.30)[pathway.suse.cz]; R_DKIM_ALLOW(-0.20)[suse.com:s=susede1]; MIME_GOOD(-0.10)[text/plain]; NEURAL_HAM_SHORT(-0.07)[-0.366]; MX_GOOD(-0.01)[]; ARC_NA(0.00)[]; DIRECT_TO_MX(0.00)[git-send-email 2.52.0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FROM_HAS_DN(0.00)[]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; RCPT_COUNT_TWELVE(0.00)[18]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_COUNT_ZERO(0.00)[0]; TAGGED_RCPT(0.00)[]; FREEMAIL_CC(0.00)[atomlin.com,iogearbox.net,gmail.com,kernel.org,arm.com,google.com,vger.kernel.org,suse.com]; DKIM_TRACE(0.00)[suse.com:+]; R_RATELIMIT(0.00)[to_ip_from(RL6jpahug3dm5x93mmnjuwit91)]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:dkim,suse.com:email,pathway.suse.cz:helo]; TO_DN_SOME(0.00)[]; DNSWL_BLOCKED(0.00)[2a07:de40:b2bf:1b::12bd:from]; SPAMHAUS_XBL(0.00)[2a07:de40:b2bf:1b::12bd:from]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com] X-Spamd-Bar: +++++++++++++++ X-Rspamd-Queue-Id: 2DF4C5BD55 X-Spam-Flag: YES X-Spam-Score: 15.12 X-Spam-Level: *************** X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Rspamd-Action: add header X-Spam: Yes Content-Type: text/plain; charset="utf-8" Put the code for appending the optional "buildid" into a helper function, It makes __sprint_symbol() better readable. Also print a warning when the "modname" is set and the "buildid" isn't. It might catch a situation when some lookup function in kallsyms_lookup_buildid() does not handle the "buildid". Use pr_*_once() to avoid an infinite recursion when the function is called from printk(). The recursion is rather theoretical but better be on the safe side. Signed-off-by: Petr Mladek --- kernel/kallsyms.c | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index ffb64eaa0505..f25b122397ce 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -432,6 +432,37 @@ int lookup_symbol_name(unsigned long addr, char *symna= me) return lookup_module_symbol_name(addr, symname); } =20 +#ifdef CONFIG_STACKTRACE_BUILD_ID + +static int append_buildid(char *buffer, const char *modname, + const unsigned char *buildid) +{ + if (!modname) + return 0; + + if (!buildid) { + pr_warn_once("Undefined buildid for the module %s\n", modname); + return 0; + } + + /* build ID should match length of sprintf */ +#ifdef CONFIG_MODULES + static_assert(sizeof(typeof_member(struct module, build_id)) =3D=3D 20); +#endif + + return sprintf(buffer, " %20phN", buildid); +} + +#else /* CONFIG_STACKTRACE_BUILD_ID */ + +static int append_buildid(char *buffer, const char *modname, + const unsigned char *buildid) +{ + return 0; +} + +#endif /* CONFIG_STACKTRACE_BUILD_ID */ + /* Look up a kernel symbol and return it in a text buffer. */ static int __sprint_symbol(char *buffer, unsigned long address, int symbol_offset, int add_offset, int add_buildid) @@ -454,15 +485,8 @@ static int __sprint_symbol(char *buffer, unsigned long= address, =20 if (modname) { len +=3D sprintf(buffer + len, " [%s", modname); -#if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID) - if (add_buildid && buildid) { - /* build ID should match length of sprintf */ -#if IS_ENABLED(CONFIG_MODULES) - static_assert(sizeof(typeof_member(struct module, build_id)) =3D=3D 20); -#endif - len +=3D sprintf(buffer + len, " %20phN", buildid); - } -#endif + if (add_buildid) + len +=3D append_buildid(buffer + len, modname, buildid); len +=3D sprintf(buffer + len, "]"); } =20 --=20 2.52.0 From nobody Mon Dec 1 22:06:09 2025 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 15DED1C68F for ; Fri, 28 Nov 2025 14:00:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338427; cv=none; b=CFvSzXQfuLfLZweLWoLgB6QwyUSPafuwmXMUU61GCMCITBHpEcGdZyJmjDeulL5YQ1Z1e3TdKcjI9QbMkwYFQPXc/zy7yLlXLTjwy4CetEigasbGx98Ynott1wgX9k8RuWNvzaMhcpeGIPSLAV3dWjvrdJDg12+qo3ktPMxKET0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338427; c=relaxed/simple; bh=TQ44JRCm9Z7EU5hhvTiV5kNg21I4fO8mMdgiQbpQehI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OnaffGj9QyqUJieqParMtxYlmKF1bwn4nQ5ZTPIxXUYBc6UtlQLEOkrpUWvUYmpg6yYT5+2+eG7a0YubfMXnBG/MCgoldwSDB6/q5Z3NKIbaz96r2q3Y5oC+goViwLuxtZH5J8t5h9z+sSNR2KVz8ZnXxmkrrLiM29av7ADlBdw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=CFx9ZZnj; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=CFx9ZZnj; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="CFx9ZZnj"; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="CFx9ZZnj" Received: from pathway.suse.cz (unknown [IPv6:2a07:de40:b2bf:1b::12bd]) by smtp-out2.suse.de (Postfix) with ESMTP id 2571E5BE39; Fri, 28 Nov 2025 14:00:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338424; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=33dceX869Yxv+fMp/noNAMlIUoMuEUQYg/YIhCE5Vhs=; b=CFx9ZZnjDUv+TRREegkr3iCHrRHPxBpja+l2HlevKMore3/oOCwMMInxlArFI2vxVKteh+ EfyP5BJzZb/JTAt2dFkCgw2jeR6rReurovP2y+qomhIjIdWS51Pw0b1jYuA+d2lMHNQjBT 6P5ekh98BgoLohs0fpzKPRyPvTTmjAY= Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.com header.s=susede1 header.b=CFx9ZZnj DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338424; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=33dceX869Yxv+fMp/noNAMlIUoMuEUQYg/YIhCE5Vhs=; b=CFx9ZZnjDUv+TRREegkr3iCHrRHPxBpja+l2HlevKMore3/oOCwMMInxlArFI2vxVKteh+ EfyP5BJzZb/JTAt2dFkCgw2jeR6rReurovP2y+qomhIjIdWS51Pw0b1jYuA+d2lMHNQjBT 6P5ekh98BgoLohs0fpzKPRyPvTTmjAY= From: Petr Mladek To: Petr Pavlu , Steven Rostedt , Alexei Starovoitov , Andrew Morton , Kees Cook Cc: Aaron Tomlin , Daniel Borkmann , John Fastabend , Masami Hiramatsu , Mark Rutland , Luis Chamberlain , Daniel Gomez , Sami Tolvanen , linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-modules@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Petr Mladek Subject: [PATCH v3 5/7] kallsyms/bpf: Rename __bpf_address_lookup() to bpf_address_lookup() Date: Fri, 28 Nov 2025 14:59:18 +0100 Message-ID: <20251128135920.217303-6-pmladek@suse.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251128135920.217303-1-pmladek@suse.com> References: <20251128135920.217303-1-pmladek@suse.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [15.11 / 50.00]; SPAM_FLAG(5.00)[]; NEURAL_SPAM_LONG(3.50)[1.000]; BAYES_HAM(-3.00)[100.00%]; HFILTER_HOSTNAME_UNKNOWN(2.50)[]; RDNS_NONE(2.00)[]; SUSPICIOUS_RECIPS(1.50)[]; ONCE_RECEIVED(1.20)[]; HFILTER_HELO_IP_A(1.00)[pathway.suse.cz]; MID_CONTAINS_FROM(1.00)[]; R_MISSING_CHARSET(0.50)[]; HFILTER_HELO_NORES_A_OR_MX(0.30)[pathway.suse.cz]; R_DKIM_ALLOW(-0.20)[suse.com:s=susede1]; MIME_GOOD(-0.10)[text/plain]; NEURAL_HAM_SHORT(-0.08)[-0.394]; MX_GOOD(-0.01)[]; ARC_NA(0.00)[]; DIRECT_TO_MX(0.00)[git-send-email 2.52.0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FROM_HAS_DN(0.00)[]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; RCPT_COUNT_TWELVE(0.00)[18]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_COUNT_ZERO(0.00)[0]; TAGGED_RCPT(0.00)[]; FREEMAIL_CC(0.00)[atomlin.com,iogearbox.net,gmail.com,kernel.org,arm.com,google.com,vger.kernel.org,suse.com]; DKIM_TRACE(0.00)[suse.com:+]; R_RATELIMIT(0.00)[to_ip_from(RL6jpahug3dm5x93mmnjuwit91)]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:dkim,suse.com:email,pathway.suse.cz:helo]; TO_DN_SOME(0.00)[]; DNSWL_BLOCKED(0.00)[2a07:de40:b2bf:1b::12bd:from]; SPAMHAUS_XBL(0.00)[2a07:de40:b2bf:1b::12bd:from]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com] X-Spamd-Bar: +++++++++++++++ X-Rspamd-Queue-Id: 2571E5BE39 X-Spam-Flag: YES X-Spam-Score: 15.11 X-Spam-Level: *************** X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Rspamd-Action: add header X-Spam: Yes Content-Type: text/plain; charset="utf-8" bpf_address_lookup() has been used only in kallsyms_lookup_buildid(). It was supposed to set @modname and @modbuildid when the symbol was in a module. But it always just cleared @modname because BPF symbols were never in a module. And it did not clear @modbuildid because the pointer was not passed. The wrapper is no longer needed. Both @modname and @modbuildid are now always initialized to NULL in kallsyms_lookup_buildid(). Remove the wrapper and rename __bpf_address_lookup() to bpf_address_lookup() because this variant is used everywhere. Fixes: 9294523e3768 ("module: add printk formats to add module build ID to = stacktraces") Acked-by: Alexei Starovoitov Signed-off-by: Petr Mladek --- arch/arm64/net/bpf_jit_comp.c | 2 +- arch/powerpc/net/bpf_jit_comp.c | 2 +- include/linux/filter.h | 26 ++++---------------------- kernel/bpf/core.c | 4 ++-- kernel/kallsyms.c | 5 ++--- 5 files changed, 10 insertions(+), 29 deletions(-) diff --git a/arch/arm64/net/bpf_jit_comp.c b/arch/arm64/net/bpf_jit_comp.c index 0c9a50a1e73e..17e6a041ea4d 100644 --- a/arch/arm64/net/bpf_jit_comp.c +++ b/arch/arm64/net/bpf_jit_comp.c @@ -2939,7 +2939,7 @@ int bpf_arch_text_poke(void *ip, enum bpf_text_poke_t= ype poke_type, u64 plt_target =3D 0ULL; bool poking_bpf_entry; =20 - if (!__bpf_address_lookup((unsigned long)ip, &size, &offset, namebuf)) + if (!bpf_address_lookup((unsigned long)ip, &size, &offset, namebuf)) /* Only poking bpf text is supported. Since kernel function * entry is set up by ftrace, we reply on ftrace to poke kernel * functions. diff --git a/arch/powerpc/net/bpf_jit_comp.c b/arch/powerpc/net/bpf_jit_com= p.c index 88ad5ba7b87f..21f7f26a5e2f 100644 --- a/arch/powerpc/net/bpf_jit_comp.c +++ b/arch/powerpc/net/bpf_jit_comp.c @@ -1122,7 +1122,7 @@ int bpf_arch_text_poke(void *ip, enum bpf_text_poke_t= ype poke_type, branch_flags =3D poke_type =3D=3D BPF_MOD_CALL ? BRANCH_SET_LINK : 0; =20 /* We currently only support poking bpf programs */ - if (!__bpf_address_lookup(bpf_func, &size, &offset, name)) { + if (!bpf_address_lookup(bpf_func, &size, &offset, name)) { pr_err("%s (0x%lx): kernel/modules are not supported\n", __func__, bpf_f= unc); return -EOPNOTSUPP; } diff --git a/include/linux/filter.h b/include/linux/filter.h index 973233b82dc1..0189f7488044 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h @@ -1373,24 +1373,13 @@ static inline bool bpf_jit_kallsyms_enabled(void) return false; } =20 -int __bpf_address_lookup(unsigned long addr, unsigned long *size, - unsigned long *off, char *sym); +int bpf_address_lookup(unsigned long addr, unsigned long *size, + unsigned long *off, char *sym); bool is_bpf_text_address(unsigned long addr); int bpf_get_kallsym(unsigned int symnum, unsigned long *value, char *type, char *sym); struct bpf_prog *bpf_prog_ksym_find(unsigned long addr); =20 -static inline int -bpf_address_lookup(unsigned long addr, unsigned long *size, - unsigned long *off, char **modname, char *sym) -{ - int ret =3D __bpf_address_lookup(addr, size, off, sym); - - if (ret && modname) - *modname =3D NULL; - return ret; -} - void bpf_prog_kallsyms_add(struct bpf_prog *fp); void bpf_prog_kallsyms_del(struct bpf_prog *fp); =20 @@ -1429,8 +1418,8 @@ static inline bool bpf_jit_kallsyms_enabled(void) } =20 static inline int -__bpf_address_lookup(unsigned long addr, unsigned long *size, - unsigned long *off, char *sym) +bpf_address_lookup(unsigned long addr, unsigned long *size, + unsigned long *off, char *sym) { return 0; } @@ -1451,13 +1440,6 @@ static inline struct bpf_prog *bpf_prog_ksym_find(un= signed long addr) return NULL; } =20 -static inline int -bpf_address_lookup(unsigned long addr, unsigned long *size, - unsigned long *off, char **modname, char *sym) -{ - return 0; -} - static inline void bpf_prog_kallsyms_add(struct bpf_prog *fp) { } diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index d595fe512498..c2278f392e93 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -713,8 +713,8 @@ static struct bpf_ksym *bpf_ksym_find(unsigned long add= r) return n ? container_of(n, struct bpf_ksym, tnode) : NULL; } =20 -int __bpf_address_lookup(unsigned long addr, unsigned long *size, - unsigned long *off, char *sym) +int bpf_address_lookup(unsigned long addr, unsigned long *size, + unsigned long *off, char *sym) { struct bpf_ksym *ksym; int ret =3D 0; diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index f25b122397ce..97b92fc8871d 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -342,7 +342,7 @@ int kallsyms_lookup_size_offset(unsigned long addr, uns= igned long *symbolsize, return 1; } return !!module_address_lookup(addr, symbolsize, offset, NULL, NULL, name= buf) || - !!__bpf_address_lookup(addr, symbolsize, offset, namebuf); + !!bpf_address_lookup(addr, symbolsize, offset, namebuf); } =20 static int kallsyms_lookup_buildid(unsigned long addr, @@ -383,8 +383,7 @@ static int kallsyms_lookup_buildid(unsigned long addr, ret =3D module_address_lookup(addr, symbolsize, offset, modname, modbuildid, namebuf); if (!ret) - ret =3D bpf_address_lookup(addr, symbolsize, - offset, modname, namebuf); + ret =3D bpf_address_lookup(addr, symbolsize, offset, namebuf); =20 if (!ret) ret =3D ftrace_mod_address_lookup(addr, symbolsize, --=20 2.52.0 From nobody Mon Dec 1 22:06:09 2025 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2DBB423C513 for ; Fri, 28 Nov 2025 14:00:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338440; cv=none; b=tsL8AVCOfX1bp9kiaGK2++wQY8ByO/YkQbutOuqlWfum8tCmY4XejgcczCfet0ZH+QVhAkSAsajAiexK0+LoTQ+QJhHDvCy2lPrssSYiXr7wHAR9QdlAuz12zD9YKxvuMISTaswgFWQaZQ00Ogu8N1NOfyHy2hVdCxlp4PAXcOE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338440; c=relaxed/simple; bh=8+22zrEZbmRi2hZ0IxfCnN+FjDUhaZxI/uAGmgwFPqU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jAOjPfffXZdNkagJzWcHBgXhQmrvGrtRdRpaMZNE1E8zUksS7dLjJG2J1SQHjw31nsz9i88nhOejMzWp9dftHVb/F/DFSZZiTlT2UoP4VbF67eTs25+YrAno4cR/qOgxw+qPSSCfRLQEunniXDL8z3cUW4A5OUXZhSlgqqJUYjQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=Dpzdk+/O; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=OQG9WMMK; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="Dpzdk+/O"; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="OQG9WMMK" Received: from pathway.suse.cz (unknown [IPv6:2a07:de40:b2bf:1b::12bd]) by smtp-out2.suse.de (Postfix) with ESMTP id 970C25BE7B; Fri, 28 Nov 2025 14:00:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338435; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KpZ66NsDo6oRbcdThq5SnZKXC4wNbdElMjhexsMICjA=; b=Dpzdk+/O54oSQ9dMN/KDzMEbXsseH88A2fBkQCeDvzS7x2Ofrsin3lCLMLNlThw/c9Rkw4 XZ3PEMfgz1seJBPGhlzp4Ul09eR1V7JR2onETDwf+E6ITQPOfPnp6FBLkVbLXVebVaKpBv Srd4VzNTVmKkx1N4Kj6A0ubDYo75J+w= Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.com header.s=susede1 header.b=OQG9WMMK DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338434; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KpZ66NsDo6oRbcdThq5SnZKXC4wNbdElMjhexsMICjA=; b=OQG9WMMKXUPh2j0SoCAWkFp3kPyM+ck+Mba6KP5sMyclKfhKTrmFQ1C2A4YhwGSGeMW94Z AsBDc1pz1kXdoXmmPd99BK63IpU1obyUDMFCG+CwlllfUdt21FC/jAs/oKAMaLRv2nGNmP JvGtnGQiPSpEEj3xRiK4TYuiycSu7pI= From: Petr Mladek To: Petr Pavlu , Steven Rostedt , Alexei Starovoitov , Andrew Morton , Kees Cook Cc: Aaron Tomlin , Daniel Borkmann , John Fastabend , Masami Hiramatsu , Mark Rutland , Luis Chamberlain , Daniel Gomez , Sami Tolvanen , linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-modules@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Petr Mladek Subject: [PATCH v3 6/7] kallsyms/ftrace: Set module buildid in ftrace_mod_address_lookup() Date: Fri, 28 Nov 2025 14:59:19 +0100 Message-ID: <20251128135920.217303-7-pmladek@suse.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251128135920.217303-1-pmladek@suse.com> References: <20251128135920.217303-1-pmladek@suse.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [15.11 / 50.00]; SPAM_FLAG(5.00)[]; NEURAL_SPAM_LONG(3.50)[1.000]; BAYES_HAM(-3.00)[100.00%]; HFILTER_HOSTNAME_UNKNOWN(2.50)[]; RDNS_NONE(2.00)[]; SUSPICIOUS_RECIPS(1.50)[]; ONCE_RECEIVED(1.20)[]; HFILTER_HELO_IP_A(1.00)[pathway.suse.cz]; MID_CONTAINS_FROM(1.00)[]; R_MISSING_CHARSET(0.50)[]; HFILTER_HELO_NORES_A_OR_MX(0.30)[pathway.suse.cz]; R_DKIM_ALLOW(-0.20)[suse.com:s=susede1]; MIME_GOOD(-0.10)[text/plain]; NEURAL_HAM_SHORT(-0.08)[-0.381]; MX_GOOD(-0.01)[]; ARC_NA(0.00)[]; DIRECT_TO_MX(0.00)[git-send-email 2.52.0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FROM_HAS_DN(0.00)[]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; RCPT_COUNT_TWELVE(0.00)[18]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_COUNT_ZERO(0.00)[0]; TAGGED_RCPT(0.00)[]; FREEMAIL_CC(0.00)[atomlin.com,iogearbox.net,gmail.com,kernel.org,arm.com,google.com,vger.kernel.org,suse.com]; DKIM_TRACE(0.00)[suse.com:+]; R_RATELIMIT(0.00)[to_ip_from(RL6jpahug3dm5x93mmnjuwit91)]; DBL_BLOCKED_OPENRESOLVER(0.00)[goodmis.org:email,suse.com:mid,suse.com:dkim,suse.com:email,pathway.suse.cz:helo,atomlin.com:email]; TO_DN_SOME(0.00)[]; DNSWL_BLOCKED(0.00)[2a07:de40:b2bf:1b::12bd:from]; SPAMHAUS_XBL(0.00)[2a07:de40:b2bf:1b::12bd:from]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com] X-Spamd-Bar: +++++++++++++++ X-Rspamd-Queue-Id: 970C25BE7B X-Spam-Flag: YES X-Spam-Score: 15.11 X-Spam-Level: *************** X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Rspamd-Action: add header X-Spam: Yes Content-Type: text/plain; charset="utf-8" __sprint_symbol() might access an invalid pointer when kallsyms_lookup_buildid() returns a symbol found by ftrace_mod_address_lookup(). The ftrace lookup function must set both @modname and @modbuildid the same way as module_address_lookup(). Fixes: 9294523e3768 ("module: add printk formats to add module build ID to = stacktraces") Reviewed-by: Aaron Tomlin Acked-by: Steven Rostedt (Google) Signed-off-by: Petr Mladek --- include/linux/ftrace.h | 6 ++++-- kernel/kallsyms.c | 4 ++-- kernel/trace/ftrace.c | 5 ++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h index 07f8c309e432..9cc60e2506af 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -87,11 +87,13 @@ struct ftrace_hash; defined(CONFIG_DYNAMIC_FTRACE) int ftrace_mod_address_lookup(unsigned long addr, unsigned long *size, - unsigned long *off, char **modname, char *sym); + unsigned long *off, char **modname, + const unsigned char **modbuildid, char *sym); #else static inline int ftrace_mod_address_lookup(unsigned long addr, unsigned long *size, - unsigned long *off, char **modname, char *sym) + unsigned long *off, char **modname, + const unsigned char **modbuildid, char *sym) { return 0; } diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index 97b92fc8871d..5bc1646f8639 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -386,8 +386,8 @@ static int kallsyms_lookup_buildid(unsigned long addr, ret =3D bpf_address_lookup(addr, symbolsize, offset, namebuf); =20 if (!ret) - ret =3D ftrace_mod_address_lookup(addr, symbolsize, - offset, modname, namebuf); + ret =3D ftrace_mod_address_lookup(addr, symbolsize, offset, + modname, modbuildid, namebuf); =20 return ret; } diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 59cfacb8a5bb..d0001dffd98a 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -7708,7 +7708,8 @@ ftrace_func_address_lookup(struct ftrace_mod_map *mod= _map, =20 int ftrace_mod_address_lookup(unsigned long addr, unsigned long *size, - unsigned long *off, char **modname, char *sym) + unsigned long *off, char **modname, + const unsigned char **modbuildid, char *sym) { struct ftrace_mod_map *mod_map; int ret =3D 0; @@ -7720,6 +7721,8 @@ ftrace_mod_address_lookup(unsigned long addr, unsigne= d long *size, if (ret) { if (modname) *modname =3D mod_map->mod->name; + if (modbuildid) + *modbuildid =3D module_buildid(mod_map->mod); break; } } --=20 2.52.0 From nobody Mon Dec 1 22:06:09 2025 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 600B430FC08 for ; Fri, 28 Nov 2025 14:00:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338457; cv=none; b=QwPD+GUyykaUlJngD51g3Tj9i+l/FtvP0GfFO0OqEH8/b67oBmS8it3Pw5XyQII3ECUuXGZopeo1UQ5Ed3pdi2TVAEx6CTECT1s/RgkpoIjYe6b35Ri2bruJV9QIYjKjqu/VOnJTJqgiivB8VfV0ZgBdyzbm6zGsbSxfJKEzCko= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764338457; c=relaxed/simple; bh=/b6oiUSdkAC7r0PXy4PCn7idBfGLvrD/tieVHb+t+gg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jgc2UC4lMUGOYo7IEkt3t2I848/8XKw7Azvj+1TFHDX62Aluoyp0znVEiADLNrKP2mz6OjWblM/VzYA6fxN+ZIMXlzJilvcG2wn1IqdlYtujtdil8OS4oftEw0YAmUHxtq1Ni8NDNCKmtIijyqqAG5uCGl88gpIjJ8OdFFIV0OE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=KB7iHEr7; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b=idDsK9Ht; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="KB7iHEr7"; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="idDsK9Ht" Received: from pathway.suse.cz (unknown [IPv6:2a07:de40:b2bf:1b::12bd]) by smtp-out2.suse.de (Postfix) with ESMTP id EDE045BED2; Fri, 28 Nov 2025 14:00:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338453; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ah68JRZAkYtiOi50cXOHf5n/v9ykgtc02Rb05ZD2x3A=; b=KB7iHEr7n8o/0Eo5B6UezaVaVEdc+TxWLJyN74y/tiTQhTWGwRT19PlQzpYM1d+51DWQb6 HsasaTjnf4YTWzQ4YvqXegdkt7dzWFOKDQEob4aRz+LiLeTakRQ4GQH4K0ZdP2Hx02voSh Lx4KGAH+DPHJBccEM9JKvWqcr39PXUk= Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.com header.s=susede1 header.b=idDsK9Ht DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1764338452; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ah68JRZAkYtiOi50cXOHf5n/v9ykgtc02Rb05ZD2x3A=; b=idDsK9HtLL0GmmiLlXxzQyHibz/wSeTyNLqqFDSMFbL+JNxAKIMrkj4NkV21HB1xsIpVQU +66AxwQttp5jazE0I8d6nIGYQq0vGXsZGI35X8WfSs/w/ExkpDKID6XGOM6wlibldDhhJx n7pToOnHv++hyVkBT1RevXmA5j/53TM= From: Petr Mladek To: Petr Pavlu , Steven Rostedt , Alexei Starovoitov , Andrew Morton , Kees Cook Cc: Aaron Tomlin , Daniel Borkmann , John Fastabend , Masami Hiramatsu , Mark Rutland , Luis Chamberlain , Daniel Gomez , Sami Tolvanen , linux-kernel@vger.kernel.org, bpf@vger.kernel.org, linux-modules@vger.kernel.org, linux-trace-kernel@vger.kernel.org, Petr Mladek Subject: [PATCH v3 7/7] kallsyms: Prevent module removal when printing module name and buildid Date: Fri, 28 Nov 2025 14:59:20 +0100 Message-ID: <20251128135920.217303-8-pmladek@suse.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20251128135920.217303-1-pmladek@suse.com> References: <20251128135920.217303-1-pmladek@suse.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spamd-Result: default: False [15.13 / 50.00]; SPAM_FLAG(5.00)[]; NEURAL_SPAM_LONG(3.50)[1.000]; BAYES_HAM(-3.00)[100.00%]; HFILTER_HOSTNAME_UNKNOWN(2.50)[]; RDNS_NONE(2.00)[]; SUSPICIOUS_RECIPS(1.50)[]; ONCE_RECEIVED(1.20)[]; HFILTER_HELO_IP_A(1.00)[pathway.suse.cz]; MID_CONTAINS_FROM(1.00)[]; R_MISSING_CHARSET(0.50)[]; HFILTER_HELO_NORES_A_OR_MX(0.30)[pathway.suse.cz]; R_DKIM_ALLOW(-0.20)[suse.com:s=susede1]; MIME_GOOD(-0.10)[text/plain]; NEURAL_HAM_SHORT(-0.06)[-0.318]; MX_GOOD(-0.01)[]; ARC_NA(0.00)[]; DIRECT_TO_MX(0.00)[git-send-email 2.52.0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FROM_HAS_DN(0.00)[]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; RCPT_COUNT_TWELVE(0.00)[18]; FUZZY_RATELIMITED(0.00)[rspamd.com]; RCVD_COUNT_ZERO(0.00)[0]; TAGGED_RCPT(0.00)[]; FREEMAIL_CC(0.00)[atomlin.com,iogearbox.net,gmail.com,kernel.org,arm.com,google.com,vger.kernel.org,suse.com]; DKIM_TRACE(0.00)[suse.com:+]; R_RATELIMIT(0.00)[to_ip_from(RL6jpahug3dm5x93mmnjuwit91)]; DBL_BLOCKED_OPENRESOLVER(0.00)[atomlin.com:email,suse.com:mid,suse.com:dkim,suse.com:email,pathway.suse.cz:helo]; TO_DN_SOME(0.00)[]; DNSWL_BLOCKED(0.00)[2a07:de40:b2bf:1b::12bd:from]; SPAMHAUS_XBL(0.00)[2a07:de40:b2bf:1b::12bd:from]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FREEMAIL_ENVRCPT(0.00)[gmail.com] X-Spamd-Bar: +++++++++++++++ X-Rspamd-Queue-Id: EDE045BED2 X-Spam-Flag: YES X-Spam-Score: 15.13 X-Spam-Level: *************** X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Rspamd-Action: add header X-Spam: Yes Content-Type: text/plain; charset="utf-8" kallsyms_lookup_buildid() copies the symbol name into the given buffer so that it can be safely read anytime later. But it just copies pointers to mod->name and mod->build_id which might get reused after the related struct module gets removed. The lifetime of struct module is synchronized using RCU. Take the rcu read lock for the entire __sprint_symbol(). Reviewed-by: Aaron Tomlin Signed-off-by: Petr Mladek --- kernel/kallsyms.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index 5bc1646f8639..202d39f5493a 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -471,6 +471,9 @@ static int __sprint_symbol(char *buffer, unsigned long = address, unsigned long offset, size; int len; =20 + /* Prevent module removal until modname and modbuildid are printed */ + guard(rcu)(); + address +=3D symbol_offset; len =3D kallsyms_lookup_buildid(address, &size, &offset, &modname, &build= id, buffer); --=20 2.52.0