On Fri, Jan 15, 2021 at 02:24:46PM +0000, Mark Brown wrote: > From: Mark Rutland <mark.rutland@xxxxxxx> > > 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@xxxxxxx> > Cc: Jiri Kosina <jikos@xxxxxxxxxx> > Cc: Joe Lawrence <joe.lawrence@xxxxxxxxxx> > Cc: Jonathan Corbet <corbet@xxxxxxx> > Cc: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> > Cc: Mark Brown <broonie@xxxxxxxxxx> > Cc: Miroslav Benes <mbenes@xxxxxxx> > Cc: Petr Mladek <pmladek@xxxxxxxx> > Cc: linux-doc@xxxxxxxxxxxxxxxx > Cc: live-patching@xxxxxxxxxxxxxxx > [Updates following review -- broonie] > Signed-off-by: Mark Brown <broonie@xxxxxxxxxx> > --- > > v3: > - Incorporated objtool section from Mark. > - Deleted confusing notes about using annotations. Acked-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> -- Josh