From: Geert Uytterhoeven <geert@linux-m68k.org>
To: Sasha Levin <sashal@kernel.org>
Cc: torvalds@linuxfoundation.org, akpm@linux-foundation.org,
konstantin@linuxfoundation.org, ksummit@lists.linux.dev,
laurent.pinchart@ideasonboard.com, linux@leemhuis.info,
richard@nod.at, rostedt@goodmis.org, users@kernel.org
Subject: Re: [RFC] kallsyms: embed source file:line info in kernel stack traces
Date: Tue, 3 Mar 2026 09:09:55 +0100 [thread overview]
Message-ID: <CAMuHMdVhfFQQtM3baH+47uf0iv+1zHDb9_DjFetQZjOLAzrDhg@mail.gmail.com> (raw)
In-Reply-To: <20260302202828.2722037-1-sashal@kernel.org>
Hi Sasha,
On Mon, 2 Mar 2026 at 21:28, Sasha Levin <sashal@kernel.org> wrote:
> Add CONFIG_KALLSYMS_LINEINFO, which embeds a compact address-to-line
> lookup table in the kernel image so stack traces directly print source
> file and line number information:
>
> root@localhost:~# echo c > /proc/sysrq-trigger
> [ 11.201987] sysrq: Trigger a crash
> [ 11.202831] Kernel panic - not syncing: sysrq triggered crash
> [ 11.206218] Call Trace:
> [ 11.206501] <TASK>
> [ 11.206749] dump_stack_lvl+0x5d/0x80 (lib/dump_stack.c:94)
> [ 11.207403] vpanic+0x36e/0x620 (kernel/panic.c:650)
> [ 11.208565] ? __lock_acquire+0x465/0x2240 (kernel/locking/lockdep.c:4674)
> [ 11.209324] panic+0xc9/0xd0 (kernel/panic.c:787)
> [ 11.211873] ? find_held_lock+0x2b/0x80 (kernel/locking/lockdep.c:5350)
> [ 11.212597] ? lock_release+0xd3/0x300 (kernel/locking/lockdep.c:5535)
> [ 11.213312] sysrq_handle_crash+0x1a/0x20 (drivers/tty/sysrq.c:154)
> [ 11.214005] __handle_sysrq.cold+0x66/0x256 (drivers/tty/sysrq.c:611)
> [ 11.214712] write_sysrq_trigger+0x65/0x80 (drivers/tty/sysrq.c:1221)
> [ 11.215424] proc_reg_write+0x1bd/0x3c0 (fs/proc/inode.c:330)
> [ 11.216061] vfs_write+0x1c6/0xff0 (fs/read_write.c:686)
> [ 11.218848] ksys_write+0xfa/0x200 (fs/read_write.c:740)
> [ 11.222394] do_syscall_64+0xf3/0x690 (arch/x86/entry/syscall_64.c:63)
> [ 11.223942] entry_SYSCALL_64_after_hwframe+0x77/0x7f (arch/x86/entry/entry_64.S:121)
>
> At build time, a new host tool (scripts/gen_lineinfo) reads DWARF
> .debug_line from vmlinux using libdw (elfutils), extracts all
> address-to-file:line mappings, and generates an assembly file with
> sorted parallel arrays (offsets from _text, file IDs, and line
> numbers). These are linked into vmlinux as .rodata.
>
> At runtime, kallsyms_lookup_lineinfo() does a binary search on the
> table and __sprint_symbol() appends "(file:line)" to each stack frame.
> The lookup uses offsets from _text so it works with KASLR, requires no
> locks or allocations, and is safe in any context including panic.
>
> The feature requires CONFIG_DEBUG_INFO (for DWARF data) and
> elfutils (libdw-dev) on the build host.
>
> Memory footprint measured with a simple KVM guest x86_64 config:
>
> Table: 4,597,583 entries from 4,841 source files
> lineinfo_addrs[] 4,597,583 x u32 = 17.5 MiB
> lineinfo_file_ids[] 4,597,583 x u16 = 8.8 MiB
> lineinfo_lines[] 4,597,583 x u32 = 17.5 MiB
> file_offsets + filenames ~ 0.1 MiB
> Total .rodata increase: ~ 44.0 MiB
>
> vmlinux (stripped): 529 MiB -> 573 MiB (+44 MiB / +8.3%)
>
> Assisted-by: Claude:claude-opus-4-6
> Signed-off-by: Sasha Levin <sashal@kernel.org>
Thanks for your patch!
> --- a/kernel/kallsyms.c
> +++ b/kernel/kallsyms.c
> @@ -467,6 +467,47 @@ static int append_buildid(char *buffer, const char *modname,
>
> #endif /* CONFIG_STACKTRACE_BUILD_ID */
>
> +#ifdef CONFIG_KALLSYMS_LINEINFO
> +bool kallsyms_lookup_lineinfo(unsigned long addr, const char **file,
> + unsigned int *line)
> +{
> + unsigned int offset, low, high, mid, file_id;
> +
> + if (!lineinfo_num_entries)
> + return false;
> +
> + /* Compute offset from _text */
> + if (addr < (unsigned long)_text)
> + return false;
So the passed address can be too low...
> +
> + offset = (unsigned int)(addr - (unsigned long)_text);
... but can it also be too high? I.e. could the cast truncate a large
offset to 32-bit? Or will this function never be called in that case,
due to earlier checks in __sprint_symbol()?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
next prev parent reply other threads:[~2026-03-03 8:10 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-10 4:48 kernel.org tooling update Konstantin Ryabitsev
2025-12-10 8:11 ` Mauro Carvalho Chehab
2025-12-10 13:30 ` Thorsten Leemhuis
2025-12-11 3:04 ` Theodore Tso
2025-12-12 23:48 ` Stephen Hemminger
2025-12-12 23:54 ` Randy Dunlap
2025-12-16 16:21 ` Lukas Wunner
2025-12-16 20:33 ` Jeff Johnson
2025-12-17 0:47 ` Mario Limonciello
2025-12-18 13:37 ` Jani Nikula
2025-12-18 14:09 ` Mario Limonciello
2026-01-23 9:19 ` Web of Trust work [Was: kernel.org tooling update] Uwe Kleine-König
2026-01-23 9:29 ` Greg KH
2026-01-23 11:47 ` Mauro Carvalho Chehab
2026-01-23 11:58 ` Greg KH
2026-01-23 12:24 ` Mauro Carvalho Chehab
2026-01-23 12:29 ` Greg KH
2026-01-23 13:57 ` Konstantin Ryabitsev
2026-01-23 16:24 ` James Bottomley
2026-01-23 16:33 ` Greg KH
2026-01-23 16:42 ` Joe Perches
2026-01-23 17:00 ` Steven Rostedt
2026-01-23 17:23 ` James Bottomley
2026-01-23 18:23 ` Konstantin Ryabitsev
2026-01-23 21:12 ` Uwe Kleine-König
2026-01-26 16:23 ` Konstantin Ryabitsev
2026-01-26 17:32 ` Uwe Kleine-König
2026-01-26 21:01 ` Konstantin Ryabitsev
2026-01-26 23:23 ` James Bottomley
2026-01-27 8:39 ` Uwe Kleine-König
2026-01-27 21:08 ` Linus Torvalds
2026-02-04 10:49 ` Uwe Kleine-König
2026-02-05 10:14 ` James Bottomley
2026-02-05 18:07 ` Uwe Kleine-König
2026-02-05 18:23 ` Konstantin Ryabitsev
2026-01-26 23:33 ` Mauro Carvalho Chehab
2026-01-26 23:06 ` Mauro Carvalho Chehab
2026-01-23 21:38 ` James Bottomley
2026-01-23 22:55 ` Mauro Carvalho Chehab
2026-01-23 16:38 ` Konstantin Ryabitsev
2026-01-23 17:02 ` Paul Moore
2026-03-08 7:21 ` Uwe Kleine-König
2026-03-08 10:24 ` Greg KH
2026-03-18 14:02 ` Greg KH
2026-01-23 18:42 ` kernel.org tooling update Randy Dunlap
2026-02-26 8:44 ` slowly decommission bugzilla? (was: Re: kernel.org tooling update) Thorsten Leemhuis
2026-02-26 14:40 ` Andrew G. Morgan
2026-02-26 17:04 ` Andrew Morton
2026-02-27 11:07 ` Jani Nikula
2026-02-27 15:16 ` Steven Rostedt
2026-02-27 15:18 ` Mark Brown
2026-02-27 15:44 ` Steven Rostedt
2026-02-27 15:18 ` slowly decommission bugzilla? Sven Peter
2026-02-27 15:35 ` slowly decommission bugzilla? (was: Re: kernel.org tooling update) Richard Weinberger
2026-02-27 16:00 ` Geert Uytterhoeven
2026-02-27 16:22 ` Richard Weinberger
2026-02-27 16:29 ` Peter Zijlstra
2026-02-27 17:07 ` James Bottomley
2026-02-28 13:41 ` slowly decommission bugzilla? Thorsten Leemhuis
2026-02-28 15:17 ` Richard Weinberger
2026-02-28 17:40 ` Linus Torvalds
2026-02-28 18:29 ` Richard Weinberger
2026-02-28 20:26 ` Steven Rostedt
2026-02-28 20:28 ` Richard Weinberger
2026-02-28 20:56 ` Steven Rostedt
2026-03-01 15:23 ` Sasha Levin
2026-03-01 15:35 ` Laurent Pinchart
2026-03-01 15:42 ` Sasha Levin
2026-03-01 16:13 ` Laurent Pinchart
2026-03-01 16:27 ` Sasha Levin
2026-03-06 15:01 ` Laurent Pinchart
2026-03-07 16:19 ` Sasha Levin
2026-03-01 16:15 ` James Bottomley
2026-03-01 16:49 ` Laurent Pinchart
2026-03-02 8:55 ` Mauro Carvalho Chehab
2026-03-01 17:33 ` Linus Torvalds
2026-03-02 20:28 ` [RFC] kallsyms: embed source file:line info in kernel stack traces Sasha Levin
2026-03-03 5:39 ` Alexey Dobriyan
2026-03-03 12:44 ` Sasha Levin
2026-03-03 13:17 ` Steven Rostedt
2026-03-03 16:35 ` Sasha Levin
2026-03-06 15:22 ` Laurent Pinchart
2026-03-03 19:09 ` Alexey Dobriyan
2026-03-03 6:26 ` Richard Weinberger
2026-03-03 6:48 ` Tomasz Figa
2026-03-03 9:04 ` Vlastimil Babka (SUSE)
2026-03-03 12:45 ` Sasha Levin
2026-03-03 8:11 ` Geert Uytterhoeven
2026-03-03 9:31 ` Jiri Slaby
2026-03-03 12:47 ` Sasha Levin
2026-03-03 12:58 ` James Bottomley
2026-03-03 13:08 ` Jürgen Groß
2026-03-03 8:09 ` Geert Uytterhoeven [this message]
2026-03-03 22:44 ` Helge Deller
2026-03-03 22:47 ` Sasha Levin
2026-03-01 16:01 ` slowly decommission bugzilla? James Bottomley
2026-03-01 16:16 ` Sasha Levin
2026-03-01 16:25 ` James Bottomley
2026-03-01 16:33 ` Sasha Levin
2026-03-06 10:37 ` Richard Weinberger
2026-03-06 10:44 ` Geert Uytterhoeven
2026-03-15 14:58 ` Richard Weinberger
2026-03-16 11:28 ` Greg KH
2026-03-16 21:56 ` Richard Weinberger
2026-03-17 7:51 ` Greg Kroah-Hartman
2026-04-02 4:59 ` slowly decommission bugzilla? (was: Re: kernel.org tooling update) Konstantin Ryabitsev
2026-04-02 13:07 ` Theodore Tso
2026-04-02 13:28 ` Konstantin Ryabitsev
2026-04-02 14:08 ` Theodore Tso
2026-04-02 14:21 ` Konstantin Ryabitsev
2026-04-02 14:49 ` Steven Rostedt
2026-04-02 13:51 ` James Bottomley
2026-04-02 13:42 ` slowly decommission bugzilla? Thorsten Leemhuis
2026-04-02 14:04 ` Konstantin Ryabitsev
2026-04-02 14:15 ` Richard Weinberger
2026-04-02 15:45 ` Laurent Pinchart
2026-04-02 16:04 ` Thorsten Leemhuis
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=CAMuHMdVhfFQQtM3baH+47uf0iv+1zHDb9_DjFetQZjOLAzrDhg@mail.gmail.com \
--to=geert@linux-m68k.org \
--cc=akpm@linux-foundation.org \
--cc=konstantin@linuxfoundation.org \
--cc=ksummit@lists.linux.dev \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux@leemhuis.info \
--cc=richard@nod.at \
--cc=rostedt@goodmis.org \
--cc=sashal@kernel.org \
--cc=torvalds@linuxfoundation.org \
--cc=users@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