From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5C37A3C5552; Wed, 8 Apr 2026 19:03:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775674987; cv=none; b=hvCBIUEaGV4Bh5JKsCAXenCjIo2EJaq044iKuOkz/hFGIimRc7quaoxge/UUXV2ao9Xnv9dYawIc4BExJGifp1fI0M3f1Zk5Kd4AWTh280AGbEMZ0rTAQ6FTlPjGcBU9K7BxkzYQ8gv5BwAWoOsNL/4qi5QN19rvyVtPinkmgDA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775674987; c=relaxed/simple; bh=H3ZrEKAWtoNnHOna/J53ONl35XiDmGdcF52XRBiWuRg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gDrmldJ3vWKdyJhGWE1u252+9FSA/yXxF881y9UhiXqm/NDgVySoGy8HGM0A/5Vtr1L4vlbpK8SZnP8MKS+8ucJ1xIyyUPvKefdtXQASTLOriqzMUpVksDMTiAtpqnhzEd4m/8m5yVmQ7kTambA/kgh/+3pp90/NBG9hnAP7oec= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=Fg5UcpzJ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="Fg5UcpzJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id BE597C19421; Wed, 8 Apr 2026 19:03:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1775674987; bh=H3ZrEKAWtoNnHOna/J53ONl35XiDmGdcF52XRBiWuRg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Fg5UcpzJTCC84eD2LUE6SdVM/fhk2cWqNsJ/z3dvGyv65nxEVNjsbmFL5a+KIfXFp 5TpOtfqw/7niz/EaZqjAyXc1OTN9Ox8/WwpgC/OstvJOmkIRyOF3tawpFbQMZmXcF4 qjRN04tUxqFKgmrQpMhH0+Am7xcoQxSvBc7s9rUw= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Petr Mladek , Aaron Tomlin , Alexei Starovoitov , Daniel Borkman , Daniel Gomez , John Fastabend , Kees Cook , Luis Chamberalin , Marc Rutland , "Masami Hiramatsu (Google)" , Petr Pavlu , Sami Tolvanen , "Steven Rostedt (Google)" , Andrew Morton Subject: [PATCH 6.19 309/311] kallsyms: cleanup code for appending the module buildid Date: Wed, 8 Apr 2026 20:05:09 +0200 Message-ID: <20260408175950.903571979@linuxfoundation.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260408175939.393281918@linuxfoundation.org> References: <20260408175939.393281918@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: Petr Mladek commit 8e81dac4cd5477731169b92cff7c24f8f6635950 upstream. 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. Link: https://lkml.kernel.org/r/20251128135920.217303-5-pmladek@suse.com Signed-off-by: Petr Mladek Cc: Aaron Tomlin Cc: Alexei Starovoitov Cc: Daniel Borkman Cc: Daniel Gomez Cc: John Fastabend Cc: Kees Cook Cc: Luis Chamberalin Cc: Marc Rutland Cc: "Masami Hiramatsu (Google)" Cc: Petr Pavlu Cc: Sami Tolvanen Cc: Steven Rostedt (Google) Signed-off-by: Andrew Morton Signed-off-by: Greg Kroah-Hartman --- kernel/kallsyms.c | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c @@ -434,6 +434,37 @@ int lookup_symbol_name(unsigned long add return lookup_module_symbol_name(addr, symname); } +#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)) == 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) @@ -456,15 +487,8 @@ static int __sprint_symbol(char *buffer, if (modname) { len += 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)) == 20); -#endif - len += sprintf(buffer + len, " %20phN", buildid); - } -#endif + if (add_buildid) + len += append_buildid(buffer + len, modname, buildid); len += sprintf(buffer + len, "]"); }