From: sashiko-bot@kernel.org
To: "Jens Remus" <jremus@linux.ibm.com>
Cc: bpf@vger.kernel.org
Subject: Re: [PATCH v16 02/20] unwind_user/sframe: Add support for reading .sframe headers
Date: Thu, 21 May 2026 14:51:39 +0000 [thread overview]
Message-ID: <20260521145139.C85421F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260521142546.3908498-3-jremus@linux.ibm.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Calculations for sframe section boundaries lack overflow checks, allowing malformed headers to bypass bounds validation on 32-bit architectures.
--
commit 054ec0b1d4b6a41d4be90015daaf62a201f3ec3b
Author: Josh Poimboeuf <jpoimboe@kernel.org>
unwind_user/sframe: Add support for reading .sframe headers
This commit introduces basic infrastructure for unwinding user space stacks
with sframe. It adds functionality to read and validate the .sframe section
header from user memory.
Link: https://lore.kernel.org/all/f27e8463783febfa0dabb0432a3dd6be8ad98412.1737511963.git.jpoimboe@kernel.org/
> diff --git a/kernel/unwind/sframe.c b/kernel/unwind/sframe.c
> new file mode 100644
> index 0000000000000..d24e9d4f8bef7
> --- /dev/null
> +++ b/kernel/unwind/sframe.c
> @@ -0,0 +1,136 @@
[ ... ]
> +static int sframe_read_header(struct sframe_section *sec)
> +{
> + unsigned long header_end, fdes_start, fdes_end, fres_start, fres_end;
> + struct sframe_header shdr;
> + unsigned int num_fdes;
[ ... ]
> + num_fdes = shdr.num_fdes;
> + fdes_start = header_end + shdr.fdes_off;
> + fdes_end = fdes_start + (num_fdes * sizeof(struct sframe_fde_v3));
> +
> + fres_start = header_end + shdr.fres_off;
> + fres_end = fres_start + shdr.fre_len;
[Severity: High]
Could this introduce a regression on 32-bit architectures where these
boundary calculations overflow?
On 32-bit systems, operations like header_end + shdr.fdes_off and
num_fdes * sizeof(struct sframe_fde_v3) can overflow and wrap around to
small values. For example, if a malformed header sets num_fdes = 0x10000000,
the multiplication by 16 evaluates to 0.
This might allow a crafted sframe header to satisfy the subsequent
fres_start < fdes_end and fres_end <= sec->sframe_end checks, storing a
deceptively large num_fdes and out-of-bounds section pointers. When the kernel
unwinder later processes this section, it could attempt to iterate over
millions of entries or read from wrapped addresses, potentially causing CPU
stalls or soft lockups.
Could safe math helpers like check_add_overflow() or size_mul() be used
here to prevent silent wrap-arounds?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260521142546.3908498-1-jremus@linux.ibm.com?part=2
next prev parent reply other threads:[~2026-05-21 14:51 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-21 14:25 [PATCH v16 00/20] unwind_deferred: Implement sframe handling Jens Remus
2026-05-21 14:25 ` [PATCH v16 01/20] unwind_user: Add generic and arch-specific headers to MAINTAINERS Jens Remus
2026-05-21 14:25 ` [PATCH v16 02/20] unwind_user/sframe: Add support for reading .sframe headers Jens Remus
2026-05-21 14:51 ` sashiko-bot [this message]
2026-05-22 10:11 ` Jens Remus
2026-05-27 20:09 ` Steven Rostedt
2026-05-21 14:25 ` [PATCH v16 03/20] unwind_user/sframe: Store .sframe section data in per-mm maple tree Jens Remus
2026-05-21 15:04 ` sashiko-bot
2026-05-27 20:20 ` Steven Rostedt
2026-05-21 14:25 ` [PATCH v16 04/20] x86/uaccess: Add unsafe_copy_from_user() implementation Jens Remus
2026-05-21 14:25 ` [PATCH v16 05/20] unwind_user/sframe: Add support for reading .sframe contents Jens Remus
2026-05-21 15:18 ` sashiko-bot
2026-05-22 9:26 ` Jens Remus
2026-05-27 19:49 ` Steven Rostedt
2026-05-21 14:25 ` [PATCH v16 06/20] unwind_user/sframe: Detect .sframe sections in executables Jens Remus
2026-05-21 14:25 ` [PATCH v16 07/20] unwind_user/sframe: Wire up unwind_user to sframe Jens Remus
2026-05-21 14:53 ` sashiko-bot
2026-05-22 9:55 ` Jens Remus
2026-05-21 14:25 ` [PATCH v16 08/20] unwind_user: Stop when reaching an outermost frame Jens Remus
2026-05-21 14:47 ` sashiko-bot
2026-05-22 10:12 ` Jens Remus
2026-05-21 14:25 ` [PATCH v16 09/20] unwind_user/sframe: Add support for outermost frame indication Jens Remus
2026-05-21 14:25 ` [PATCH v16 10/20] unwind_user/sframe: Remove .sframe section on detected corruption Jens Remus
2026-05-21 15:19 ` sashiko-bot
2026-05-22 10:03 ` Jens Remus
2026-05-21 14:25 ` [PATCH v16 11/20] unwind_user/sframe: Show file name in debug output Jens Remus
2026-05-21 15:05 ` sashiko-bot
2026-05-22 9:58 ` Jens Remus
2026-05-21 14:25 ` [PATCH v16 12/20] unwind_user/sframe: Add .sframe validation option Jens Remus
2026-05-21 15:02 ` sashiko-bot
2026-05-22 10:08 ` Jens Remus
2026-05-21 14:25 ` [PATCH v16 13/20] unwind_user: Enable archs that pass RA in a register Jens Remus
2026-05-21 14:25 ` [PATCH v16 14/20] unwind_user: Flexible FP/RA recovery rules Jens Remus
2026-05-21 14:25 ` [PATCH v16 15/20] unwind_user: Flexible CFA " Jens Remus
2026-05-21 14:25 ` [PATCH v16 16/20] unwind_user/sframe: Add support for SFrame V3 flexible FDEs Jens Remus
2026-05-21 15:14 ` sashiko-bot
2026-05-22 10:15 ` Jens Remus
2026-05-21 14:25 ` [PATCH v16 17/20] unwind_user/sframe: Separate reading of FRE from reading of FRE data words Jens Remus
2026-05-21 14:25 ` [PATCH v16 18/20] unwind_user/sframe: Duplicate registered .sframe section data on clone/fork Jens Remus
2026-05-21 15:37 ` sashiko-bot
2026-05-21 14:25 ` [PATCH v16 19/20] unwind_user/sframe/x86: Enable sframe unwinding on x86 Jens Remus
2026-05-21 14:25 ` [PATCH v16 20/20] unwind_user/sframe: Add prctl() interface for registering .sframe sections Jens Remus
2026-05-21 15:23 ` sashiko-bot
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=20260521145139.C85421F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=jremus@linux.ibm.com \
--cc=sashiko-reviews@lists.linux.dev \
/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.