From: sashiko-bot@kernel.org
To: "Jens Remus" <jremus@linux.ibm.com>
Cc: bpf@vger.kernel.org
Subject: Re: [PATCH v15 20/20] unwind_user/sframe: Add prctl() interface for registering .sframe sections
Date: Wed, 20 May 2026 16:52:55 +0000 [thread overview]
Message-ID: <20260520165255.A69B71F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260520154004.3845823-21-jremus@linux.ibm.com>
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] The patch introduces a temporary testing UAPI into `prctl` which is explicitly noted by the author as not intended for mainline.
- [High] Concurrent prctl(PR_ADD_SFRAME) and prctl(PR_REMOVE_SFRAME) calls lack synchronization, leading to use-after-free, double-free, and memory leaks.
- [Medium] Unsupported prctl options PR_ADD_SFRAME and PR_REMOVE_SFRAME incorrectly return -ENOSYS instead of -EINVAL when the sframe feature is disabled.
--
commit a01f291288e4c84f6ad3bbf93c1ed0939390a9b8
Author: Josh Poimboeuf <jpoimboe@kernel.org>
unwind_user/sframe: Add prctl() interface for registering .sframe sections
This commit adds new prctl interfaces to allow glibc to inform the kernel
where to find .sframe sections. This provides the kernel with visibility
into the ELF contents of shared libraries.
> [
> This adds an interface for prctl() for testing loading of sframes for
> libraries. But this interface should really be a system call. This patch
> is for testing purposes only and should not be applied to mainline.
> ]
[Severity: High]
Should this patch be merged if it creates a permanent UAPI via prctl for a
temporary testing feature?
The commit message explicitly notes it is for testing purposes only and
should not be applied to mainline. Committing to this interface could result
in userspace relying on a temporary test mechanism.
> diff --git a/kernel/sys.c b/kernel/sys.c
> index 62e842055cc9c..b0a9b1e3ccd7c 100644
> --- a/kernel/sys.c
> +++ b/kernel/sys.c
[ ... ]
> @@ -2907,6 +2908,14 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
> if (arg3 & PR_CFI_LOCK && !(arg3 & PR_CFI_DISABLE))
> error = arch_prctl_lock_branch_landing_pad_state(me);
> break;
> + case PR_ADD_SFRAME:
> + error = sframe_add_section(arg2, arg3, arg4, arg5);
> + break;
> + case PR_REMOVE_SFRAME:
> + if (arg3 || arg4 || arg5)
> + return -EINVAL;
> + error = sframe_remove_section(arg2);
> + break;
[Severity: High]
Are concurrent calls to PR_ADD_SFRAME and PR_REMOVE_SFRAME properly
synchronized to prevent double-free or memory leaks?
If sframe_remove_section() only holds an SRCU read lock and
sframe_add_section() only holds mmap_read_lock(), could Thread A and Thread
B concurrently executing PR_REMOVE_SFRAME both find the same section and
erase it?
If Thread A calls mtree_erase() and queues the section for freeing via
call_srcu(), and Thread C concurrently inserts a new section at the same
text_start via PR_ADD_SFRAME:
Thread B might then erase the new section but queue the old section's RCU
callback a second time. Could this sequence lead to a double-free of the
old section and a memory leak of the newly inserted section?
[Severity: Medium]
When the sframe feature is disabled in the kernel configuration, will these
calls return -ENOSYS instead of -EINVAL?
The dummy functions defined in include/linux/sframe.h return -ENOSYS:
static inline int sframe_add_section(unsigned long sframe_start,
unsigned long sframe_end,
unsigned long text_start,
unsigned long text_end)
{
return -ENOSYS;
}
According to the prctl ABI convention, unsupported options typically fall
through to the default case and return -EINVAL. Could returning -ENOSYS
cause unexpected errors for userspace applications probing for this feature's
availability?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260520154004.3845823-1-jremus@linux.ibm.com?part=20
next prev parent reply other threads:[~2026-05-20 16:52 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-20 15:39 [PATCH v15 00/20] unwind_deferred: Implement sframe handling Jens Remus
2026-05-20 15:39 ` [PATCH v15 01/20] unwind_user: Add generic and arch-specific headers to MAINTAINERS Jens Remus
2026-05-20 15:39 ` [PATCH v15 02/20] unwind_user/sframe: Add support for reading .sframe headers Jens Remus
2026-05-20 16:02 ` sashiko-bot
2026-05-21 7:58 ` Jens Remus
2026-05-20 15:39 ` [PATCH v15 03/20] unwind_user/sframe: Store .sframe section data in per-mm maple tree Jens Remus
2026-05-20 16:29 ` sashiko-bot
2026-05-21 9:39 ` Jens Remus
2026-05-21 16:08 ` Steven Rostedt
2026-05-20 15:39 ` [PATCH v15 04/20] x86/uaccess: Add unsafe_copy_from_user() implementation Jens Remus
2026-05-20 16:13 ` sashiko-bot
2026-05-20 15:39 ` [PATCH v15 05/20] unwind_user/sframe: Add support for reading .sframe contents Jens Remus
2026-05-20 16:33 ` sashiko-bot
2026-05-21 9:40 ` Jens Remus
2026-05-20 15:39 ` [PATCH v15 06/20] unwind_user/sframe: Detect .sframe sections in executables Jens Remus
2026-05-20 15:39 ` [PATCH v15 07/20] unwind_user/sframe: Wire up unwind_user to sframe Jens Remus
2026-05-20 16:23 ` sashiko-bot
2026-05-21 10:44 ` Jens Remus
2026-05-20 15:39 ` [PATCH v15 08/20] unwind_user: Stop when reaching an outermost frame Jens Remus
2026-05-20 16:01 ` sashiko-bot
2026-05-21 10:45 ` Jens Remus
2026-05-20 15:39 ` [PATCH v15 09/20] unwind_user/sframe: Add support for outermost frame indication Jens Remus
2026-05-20 16:01 ` sashiko-bot
2026-05-21 10:46 ` Jens Remus
2026-05-20 15:39 ` [PATCH v15 10/20] unwind_user/sframe: Remove .sframe section on detected corruption Jens Remus
2026-05-20 16:26 ` sashiko-bot
2026-05-20 15:39 ` [PATCH v15 11/20] unwind_user/sframe: Show file name in debug output Jens Remus
2026-05-20 16:14 ` sashiko-bot
2026-05-21 10:55 ` Jens Remus
2026-05-21 16:20 ` Steven Rostedt
2026-05-20 15:39 ` [PATCH v15 12/20] unwind_user/sframe: Add .sframe validation option Jens Remus
2026-05-20 16:15 ` sashiko-bot
2026-05-21 12:51 ` Jens Remus
2026-05-20 15:39 ` [PATCH v15 13/20] unwind_user: Enable archs that pass RA in a register Jens Remus
2026-05-20 16:21 ` sashiko-bot
2026-05-21 13:00 ` Jens Remus
2026-05-20 15:39 ` [PATCH v15 14/20] unwind_user: Flexible FP/RA recovery rules Jens Remus
2026-05-20 15:39 ` [PATCH v15 15/20] unwind_user: Flexible CFA " Jens Remus
2026-05-20 16:22 ` sashiko-bot
2026-05-21 11:33 ` Jens Remus
2026-05-20 15:40 ` [PATCH v15 16/20] unwind_user/sframe: Add support for SFrame V3 flexible FDEs Jens Remus
2026-05-20 17:04 ` sashiko-bot
2026-05-21 11:58 ` Jens Remus
2026-05-20 15:40 ` [PATCH v15 17/20] unwind_user/sframe: Separate reading of FRE from reading of FRE data words Jens Remus
2026-05-20 16:48 ` sashiko-bot
2026-05-20 15:40 ` [PATCH v15 18/20] unwind_user/sframe: Duplicate registered .sframe section data on clone/fork Jens Remus
2026-05-20 17:01 ` sashiko-bot
2026-05-21 12:05 ` Jens Remus
2026-05-20 15:40 ` [PATCH v15 19/20] unwind_user/sframe/x86: Enable sframe unwinding on x86 Jens Remus
2026-05-20 15:40 ` [PATCH v15 20/20] unwind_user/sframe: Add prctl() interface for registering .sframe sections Jens Remus
2026-05-20 16:52 ` sashiko-bot [this message]
2026-05-21 12:08 ` Jens Remus
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=20260520165255.A69B71F00893@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox