From: "Madhavan T. Venkataraman" <madvenka@linux.microsoft.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Julien Thierry <jthierry@redhat.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Mark Brown <broonie@kernel.org>,
Josh Poimboeuf <jpoimboe@redhat.com>,
Miroslav Benes <mbenes@suse.cz>, Will Deacon <will@kernel.org>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC PATCH 0/3] arm64: Implement reliable stack trace
Date: Tue, 2 Feb 2021 07:33:29 -0600 [thread overview]
Message-ID: <0a338e27-40fb-51c3-bff9-1b379339daec@linux.microsoft.com> (raw)
In-Reply-To: <20210202100547.GA59049@C02TD0UTHF1T.local>
On 2/2/21 4:05 AM, Mark Rutland wrote:
>>> I think at this point, we haven't gained anything from using a shadow
>>> stack, and I'd much rather we used objtool to gather any metadata needed
>>> to make unwinding reliable without mandating a shadow stack.
>>>
>> I think we have gained something. Pushing the return addresses on the shadow stack
>> and using them to unwind means that objtool does not have to decode every single
>> instruction and track the changes to the stack and frame state.
> I think that practically speaking it's necessary to track all potential
> paths through functions that may alter the shadow stack or the shadow
> stack pointer to ensure that the manipulation is well-balanced and that
> the shadow stack pointer isn't corrupted.
>
> Practically speaking, this requires decoding a significant number of
> instructions, and tracing through all potential paths a function may
> take.
I am not sure why the shadow stack should be modified by any function.
It is a shadow stack. Functions are not supposed to be aware of it
(except for the prolog and epilog).
For C functions, the compiler would reserve the shadow stack pointer
register and not use it for anything other than prolog and epilog.
If the worry is that some kernel developer may unknowingly use the register
in assembly code and we need to catch this during kernel build, we can do it
using grep. The only code that is allowed to modify it is the macros that we
define for prolog and epilog. This can be done using a simple script.
Madhavan
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-02-02 13:34 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-12 17:26 [RFC PATCH 0/3] arm64: Implement reliable stack trace Mark Brown
2020-10-12 17:26 ` [RFC PATCH 1/3] arm64: remove EL0 exception frame record Mark Brown
2020-10-12 17:26 ` [RFC PATCH 2/3] arm64: stacktrace: Report when we reach the end of the stack Mark Brown
2020-10-13 11:07 ` Mark Rutland
2020-10-12 17:26 ` [RFC PATCH 3/3] arm64: stacktrace: Implement reliable stacktrace Mark Brown
2020-10-13 10:42 ` Mark Brown
2020-10-13 11:42 ` Mark Rutland
2020-10-13 16:12 ` Mark Brown
2020-10-15 13:33 ` Miroslav Benes
2020-10-15 15:57 ` Mark Brown
2020-10-16 10:13 ` Miroslav Benes
2020-10-16 12:30 ` Mark Brown
2020-10-15 13:39 ` [RFC PATCH 0/3] arm64: Implement reliable stack trace Miroslav Benes
2020-10-15 14:16 ` Mark Rutland
2020-10-15 15:49 ` Mark Brown
2020-10-15 21:29 ` Josh Poimboeuf
2020-10-15 21:29 ` Josh Poimboeuf
2020-10-16 11:14 ` Mark Rutland
2020-10-16 11:14 ` Mark Rutland
2020-10-20 10:03 ` Mark Rutland
2020-10-20 10:03 ` Mark Rutland
2020-10-20 15:58 ` Josh Poimboeuf
2020-10-20 15:58 ` Josh Poimboeuf
2020-10-16 12:15 ` Mark Brown
2020-10-16 12:15 ` Mark Brown
2020-10-19 23:41 ` Josh Poimboeuf
2020-10-19 23:41 ` Josh Poimboeuf
2020-10-20 15:39 ` Mark Brown
2020-10-20 15:39 ` Mark Brown
2020-10-20 16:28 ` Josh Poimboeuf
2020-10-20 16:28 ` Josh Poimboeuf
2021-01-27 14:02 ` Madhavan T. Venkataraman
2021-01-27 16:40 ` Mark Rutland
2021-01-27 17:11 ` Mark Brown
2021-01-27 17:24 ` Madhavan T. Venkataraman
2021-01-27 19:54 ` Madhavan T. Venkataraman
2021-01-28 14:22 ` Mark Brown
2021-01-28 15:26 ` Josh Poimboeuf
2021-01-29 21:39 ` Madhavan T. Venkataraman
2021-02-01 3:20 ` Madhavan T. Venkataraman
2021-02-01 14:39 ` Mark Brown
2021-01-30 4:38 ` Madhavan T. Venkataraman
2021-02-01 15:21 ` Madhavan T. Venkataraman
2021-02-01 15:46 ` Madhavan T. Venkataraman
2021-02-01 16:02 ` Mark Rutland
2021-02-01 16:22 ` Mark Brown
2021-02-01 21:40 ` Madhavan T. Venkataraman
2021-02-01 21:38 ` Madhavan T. Venkataraman
2021-02-01 23:00 ` Josh Poimboeuf
2021-02-02 2:29 ` Madhavan T. Venkataraman
2021-02-02 3:36 ` Josh Poimboeuf
2021-02-02 10:05 ` Mark Rutland
2021-02-02 13:33 ` Madhavan T. Venkataraman [this message]
2021-02-02 13:35 ` Madhavan T. Venkataraman
2021-02-02 23:32 ` Madhavan T. Venkataraman
2021-02-03 16:53 ` Mark Rutland
2021-02-03 19:03 ` Madhavan T. Venkataraman
2021-02-05 2:36 ` Madhavan T. Venkataraman
2021-02-01 21:59 ` Madhavan T. Venkataraman
2021-02-02 13:36 ` Mark Brown
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=0a338e27-40fb-51c3-bff9-1b379339daec@linux.microsoft.com \
--to=madvenka@linux.microsoft.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=jpoimboe@redhat.com \
--cc=jthierry@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=mbenes@suse.cz \
--cc=will@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 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.