public inbox for linux-trace-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jens Remus <jremus@linux.ibm.com>
To: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
	linux-s390@vger.kernel.org, bpf@vger.kernel.org, x86@kernel.org,
	Steven Rostedt <rostedt@kernel.org>
Cc: Jens Remus <jremus@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Josh Poimboeuf <jpoimboe@kernel.org>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Andrii Nakryiko <andrii@kernel.org>,
	Indu Bhagat <indu.bhagat@oracle.com>,
	"Jose E. Marchesi" <jemarch@gnu.org>,
	Beau Belgrave <beaub@linux.microsoft.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Florian Weimer <fweimer@redhat.com>, Kees Cook <kees@kernel.org>,
	"Carlos O'Donell" <codonell@redhat.com>,
	Sam James <sam@gentoo.org>, Dylan Hatch <dylanbhatch@google.com>
Subject: [RFC PATCH v1 2/5] unwind_user/sframe: Add support for signal frame indication
Date: Tue, 27 Jan 2026 16:33:28 +0100	[thread overview]
Message-ID: <20260127153331.2902504-3-jremus@linux.ibm.com> (raw)
In-Reply-To: <20260127153331.2902504-1-jremus@linux.ibm.com>

SFrame V3 represents the assembler directive .cfi_signal_frame using
a SFrame FDE flag.  Note that a SFrame FDE with this particular flag set
may have no SFrame FREs.

Introduce a SFRAME_V3_FDE_SIGNAL_P() helper macro.  Use it in
__find_fre() to populate the signal flag in struct unwind_user_frame,
even if there are no FREs.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
---
 kernel/unwind/sframe.c | 8 +++++++-
 kernel/unwind/sframe.h | 1 +
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/kernel/unwind/sframe.c b/kernel/unwind/sframe.c
index 21283e3bda42..9fd2fc1572cc 100644
--- a/kernel/unwind/sframe.c
+++ b/kernel/unwind/sframe.c
@@ -446,6 +446,7 @@ static __always_inline int __find_fre(struct sframe_section *sec,
 				      struct unwind_user_frame *frame)
 {
 	unsigned char fde_pctype = SFRAME_V3_FDE_PCTYPE(fde->info);
+	bool signal = SFRAME_V3_FDE_SIGNAL_P(fde->info);
 	struct sframe_fre_internal *fre, *prev_fre = NULL;
 	struct sframe_fre_internal fres[2];
 	unsigned long fre_addr;
@@ -486,8 +487,11 @@ static __always_inline int __find_fre(struct sframe_section *sec,
 		prev_fre = fre;
 	}
 
-	if (!prev_fre)
+	if (!prev_fre) {
+		if (signal)
+			goto signal;
 		return -EINVAL;
+	}
 	fre = prev_fre;
 
 	ret = __read_fre_datawords(sec, fde, fre);
@@ -500,6 +504,8 @@ static __always_inline int __find_fre(struct sframe_section *sec,
 	sframe_init_rule_data(&frame->fp, fre->fp_ctl, fre->fp_off);
 	frame->sp_off  = SFRAME_SP_OFFSET;
 	frame->outermost = SFRAME_V3_FRE_RA_UNDEFINED_P(fre->info);
+signal:
+	frame->signal = signal;
 
 	return 0;
 }
diff --git a/kernel/unwind/sframe.h b/kernel/unwind/sframe.h
index 8a5322e95403..78432857f84c 100644
--- a/kernel/unwind/sframe.h
+++ b/kernel/unwind/sframe.h
@@ -65,6 +65,7 @@ struct sframe_fda_v3 {
 #define SFRAME_V3_FDE_FRE_TYPE(info)		((info) & 0xf)
 #define SFRAME_V3_FDE_PCTYPE(info)		(((info) >> 4) & 0x1)
 #define SFRAME_V3_AARCH64_FDE_PAUTH_KEY(info)	(((info) >> 5) & 0x1)
+#define SFRAME_V3_FDE_SIGNAL_P(info)		(((info) >> 7) & 0x1)
 
 #define SFRAME_FDE_TYPE_REGULAR			0
 #define SFRAME_FDE_TYPE_FLEXIBLE		1
-- 
2.51.0


  parent reply	other threads:[~2026-01-27 15:33 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-27 15:33 [RFC PATCH v1 0/5] s390: Signal frame user space unwinding Jens Remus
2026-01-27 15:33 ` [RFC PATCH v1 1/5] unwind_user: Enable arch-specific signal frame unwinders Jens Remus
2026-01-27 15:33 ` Jens Remus [this message]
2026-01-27 15:33 ` [RFC PATCH v1 3/5] s390/vdso: Annotate __kernel_[rt_]sigreturn as signal frames Jens Remus
2026-01-27 15:33 ` [RFC PATCH v1 4/5] s390/signal: Move struct [rt_]sigframe to asm/sigframe.h Jens Remus
2026-01-27 15:33 ` [RFC PATCH v1 5/5] s390/unwind_user: Enable signal frame unwinding of user space 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=20260127153331.2902504-3-jremus@linux.ibm.com \
    --to=jremus@linux.ibm.com \
    --cc=acme@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=andrii@kernel.org \
    --cc=beaub@linux.microsoft.com \
    --cc=bpf@vger.kernel.org \
    --cc=codonell@redhat.com \
    --cc=dylanbhatch@google.com \
    --cc=fweimer@redhat.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=iii@linux.ibm.com \
    --cc=indu.bhagat@oracle.com \
    --cc=jemarch@gnu.org \
    --cc=jolsa@kernel.org \
    --cc=jpoimboe@kernel.org \
    --cc=kees@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@kernel.org \
    --cc=sam@gentoo.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@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