From: Jens Remus <jremus@linux.ibm.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Steven Rostedt <rostedt@kernel.org>,
linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
bpf@vger.kernel.org, x86@kernel.org,
Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Josh Poimboeuf <jpoimboe@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@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>,
Jens Axboe <axboe@kernel.dk>, Florian Weimer <fweimer@redhat.com>,
Sam James <sam@gentoo.org>, Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>
Subject: Re: [PATCH v13 02/14] unwind_user: Add frame pointer support
Date: Thu, 10 Jul 2025 17:41:36 +0200 [thread overview]
Message-ID: <155f22cb-b986-4d22-a853-6de49a1c2e03@linux.ibm.com> (raw)
In-Reply-To: <20250710112147.41585f6a@batman.local.home>
On 10.07.2025 17:21, Steven Rostedt wrote:
> On Wed, 9 Jul 2025 12:01:14 +0200
> Jens Remus <jremus@linux.ibm.com> wrote:
>>> + if (frame->use_fp) {
>>> + if (state->fp < state->sp)
>>
>> if (state->fp <= state->sp)
>>
>> I meanwhile came to the conclusion that for architectures, such as s390,
>> where SP at function entry == SP at call site, the FP may be equal to
>> the SP. At least for the brief period where the FP has been setup and
>> stack allocation did not yet take place. For most architectures this
>> can probably only occur in the topmost frame. For s390 the FP is setup
>> after static stack allocation, so --fno-omit-frame-pointer would enforce
>> FP==SP in any frame that does not perform dynamic stack allocation.
>
> From your latest email, I take it I can ignore the above?
Correct.
>>> + /* Make sure that the address is word aligned */
>>> + shift = sizeof(long) == 4 ? 2 : 3;
>>> + if ((cfa + frame->ra_off) & ((1 << shift) - 1))
>>> + goto done;
>>
>> Do all architectures/ABI mandate register stack save slots to be aligned?
>> s390 does.
>
> I believe so.
>
>>
>>> +
>>> + /* Find the Return Address (RA) */
>>> + if (get_user(ra, (unsigned long *)(cfa + frame->ra_off)))
>>> + goto done;
>>> +
>>
>> Why not validate the FP stack save slot address as well?
>
> You mean to validate cfa + frame->fp_off?
Yes.
> Isn't cfa the only real variable here? That is, if cfa + frame->ra_off
> works, wouldn't the same go for frame->fp_off, as both frame->ra_off
> and frame->fp_off are constants set by the architecture, and should be
> word aligned.
cfa + frame->ra_off could be aligned by chance. So could
cfa + frame->fp_off be as well of course.
On s390 the CFA must be aligned (as the SP must be aligned) and the
FP and RA offsets from CFA must be aligned, as pointer / 64-bit integers
(such as 64-bit register values) must be aligned as well.
So the CFA (and/or offset), FP offset, and RA offset could be validated
individually. Not sure if that would be over engineering though.
>>> + if (frame->fp_off && get_user(fp, (unsigned long __user *)(cfa + frame->fp_off)))
>>> + goto done;
Regards,
Jens
--
Jens Remus
Linux on Z Development (D3303)
+49-7031-16-1128 Office
jremus@de.ibm.com
IBM
IBM Deutschland Research & Development GmbH; Vorsitzender des Aufsichtsrats: Wolfgang Wendt; Geschäftsführung: David Faller; Sitz der Gesellschaft: Böblingen; Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM Data Privacy Statement: https://www.ibm.com/privacy/
next prev parent reply other threads:[~2025-07-10 15:42 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-08 1:22 [PATCH v13 00/14] unwind_user: x86: Deferred unwinding infrastructure Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 01/14] unwind_user: Add user space unwinding API Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 02/14] unwind_user: Add frame pointer support Steven Rostedt
2025-07-09 10:01 ` Jens Remus
2025-07-10 12:28 ` Jens Remus
2025-07-10 15:21 ` Steven Rostedt
2025-07-10 15:41 ` Jens Remus [this message]
2025-07-10 17:08 ` Steven Rostedt
2025-07-14 12:52 ` Jens Remus
2025-07-08 1:22 ` [PATCH v13 03/14] unwind_user: Add compat mode " Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 04/14] unwind_user/deferred: Add unwind_user_faultable() Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 05/14] unwind_user/deferred: Add unwind cache Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 06/14] unwind_user/deferred: Add deferred unwinding interface Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 07/14] unwind_user/deferred: Make unwind deferral requests NMI-safe Steven Rostedt
2025-07-14 13:29 ` Peter Zijlstra
2025-07-14 14:19 ` Steven Rostedt
2025-07-14 15:05 ` Peter Zijlstra
2025-07-14 15:11 ` Steven Rostedt
2025-07-15 9:09 ` Peter Zijlstra
2025-07-15 12:35 ` Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 08/14] unwind deferred: Use bitmask to determine which callbacks to call Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 09/14] unwind deferred: Use SRCU unwind_deferred_task_work() Steven Rostedt
2025-07-14 13:56 ` Peter Zijlstra
2025-07-14 14:21 ` Steven Rostedt
2025-07-14 15:03 ` Peter Zijlstra
2025-07-08 1:22 ` [PATCH v13 10/14] unwind: Clear unwind_mask on exit back to user space Steven Rostedt
2025-07-15 10:29 ` Peter Zijlstra
2025-07-15 12:49 ` Steven Rostedt
2025-07-15 18:06 ` Steven Rostedt
2025-07-15 18:10 ` Steven Rostedt
2025-07-15 18:26 ` Steven Rostedt
2025-07-15 19:04 ` Peter Zijlstra
2025-07-15 19:01 ` Peter Zijlstra
2025-07-15 17:20 ` Steven Rostedt
2025-07-15 19:07 ` Peter Zijlstra
2025-07-15 22:01 ` Steven Rostedt
2025-07-16 18:26 ` Steven Rostedt
2025-07-16 18:33 ` Steven Rostedt
2025-07-16 19:25 ` Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 11/14] unwind: Add USED bit to only have one conditional on way " Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 12/14] unwind: Finish up unwind when a task exits Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 13/14] unwind_user/x86: Enable frame pointer unwinding on x86 Steven Rostedt
2025-07-11 8:43 ` David Laight
2025-07-11 16:11 ` Steven Rostedt
2025-07-08 1:22 ` [PATCH v13 14/14] unwind_user/x86: Enable compat mode " Steven Rostedt
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=155f22cb-b986-4d22-a853-6de49a1c2e03@linux.ibm.com \
--to=jremus@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=andrii@kernel.org \
--cc=axboe@kernel.dk \
--cc=beaub@linux.microsoft.com \
--cc=bpf@vger.kernel.org \
--cc=fweimer@redhat.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=indu.bhagat@oracle.com \
--cc=jemarch@gnu.org \
--cc=jolsa@kernel.org \
--cc=jpoimboe@kernel.org \
--cc=linux-kernel@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@goodmis.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
all inboxes | Powered by JetHome®