Re: [PATCH][v4] livepatch/ppc: Enable livepatching on powerpc
From: Torsten Duwe <hidden>
Date: 2016-03-04 19:22:26
Also in:
lkml
On Fri, Mar 04, 2016 at 07:16:57PM +0100, Torsten Duwe wrote:
On Fri, Mar 04, 2016 at 02:01:37PM +0100, Petr Mladek wrote:quoted
Do I understand it correctly that we could not patch functions that pass arguments on the stack with this implementation? If yes, how hard would be to get it working, please? At least, it would be great to catch this problem and handle it with grace. Otherwise, it might be hard to debug.No, those functions only require special attention.
So far it's correct. It's been a while since I wrote that code.
I needed _any_ location to store the caller's TOC; and the stack is thread-safe and recursion-safe. The current caller's frame is already full so I had to create a new one.
Correction: the TOC can be stored in the caller's stack frame at the usual location. Only the restore instruction is a problem.
A patch function could e.g. grab that TOC value in a prologue and then pop that stack frame. Or it could add those 32 bytes to the assumed arguments' stack offsets.
So one solution could be to call the patch function via a small trampoline or pre-prologue that just pops that frame, and have the patch function restore R2 manually at the end. Sorry for the confusion, Torsten