Re: [PATCH/RFC] ppc64 livepatch: frameless klp_return_helper using odd TOC
From: Torsten Duwe <hidden>
Date: 2016-03-24 10:28:14
Also in:
lkml
On Thu, Mar 24, 2016 at 03:44:55PM +0530, Kamalesh Babulal wrote:
* Torsten Duwe [off-list ref] [2016-03-23 16:58:58]:quoted
Since nobody liked the extra stack frame nor its workarounds, here is the next attempt. Assumptions: 1. Heuristics are bad. The better they are, the more subtly the way they might fail. 2. The TOC pointer is usually dividable by 4, if not by 8. An odd value never occurs. Conclusively, this patch unambiguously creates an odd TOC value when an ftraced function's global entry point is used. Ftrace_caller will then immediately fix it, and alongside gather the information whether the made call was local or global. In case of live patching this information is furthermore used to decide whether a klp_return_helper needs to be inserted or not. CAVEAT: any frameless klp_return_helper does not play well with sibling calls! There's an emergency exit that might work, at worst it will cause an oops, but it surely avoids a lockup. At least the live patching modules on ppc64le will need to be compiled using the -fno-optimize-sibling-calls compiler flag! Thanks go to Michael Matz and Richard Biener for reassurance about heuristics and pointers to the compiler flag. Signed-off-by: Torsten Duwe <redacted>Hi Torsten, Should this patch be applied over Petr Mladek's v4 ?
Yes. Just omit the changes it makes to entry_64.S and use this instead. Torsten