Re: [PATCH v3] Documentation: livepatch: document reliable stacktrace
From: Josh Poimboeuf <hidden>
Date: 2021-01-15 15:18:20
Also in:
linux-doc, lkml
On Fri, Jan 15, 2021 at 02:24:46PM +0000, Mark Brown wrote:
From: Mark Rutland <mark.rutland@arm.com> Add documentation for reliable stacktrace. This is intended to describe the semantics and to be an aid for implementing architecture support for HAVE_RELIABLE_STACKTRACE. Unwinding is a subtle area, and architectures vary greatly in both implementation and the set of concerns that affect them, so I've tried to avoid making this too specific to any given architecture. I've used examples from both x86_64 and arm64 to explain corner cases in more detail, but I've tried to keep the descriptions sufficient for those who are unfamiliar with the particular architecture. I've tried to give rationale for all the recommendations/requirements, since that makes it easier to spot nearby issues, or when a check happens to catch a few things at once. I believe what I have written is sound, but as some of this was reverse-engineered I may have missed things worth noting. I've made a few assumptions about preferred behaviour, notably: * If you can reliably unwind through exceptions, you should (as x86_64 does). * It's fine to omit ftrace_return_to_handler and other return trampolines so long as these are not subject to patching and the original return address is reported. Most architectures do this for ftrace_return_handler, but not other return trampolines. * For cases where link register unreliability could result in duplicate entries in the trace or an inverted trace, I've assumed this should be treated as unreliable. This specific case shouldn't matter to livepatching, but I assume that that we want a reliable trace to have the correct order. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Jiri Kosina <jikos@kernel.org> Cc: Joe Lawrence <joe.lawrence@redhat.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Josh Poimboeuf <redacted> Cc: Mark Brown <broonie@kernel.org> Cc: Miroslav Benes <mbenes@suse.cz> Cc: Petr Mladek <pmladek@suse.com> Cc: linux-doc@vgert.kernel.org Cc: live-patching@vger.kernel.org [Updates following review -- broonie] Signed-off-by: Mark Brown <broonie@kernel.org> --- v3: - Incorporated objtool section from Mark. - Deleted confusing notes about using annotations.
Acked-by: Josh Poimboeuf <redacted> -- Josh