Re: [PATCH v3 0/6] Static calls

From: hpa
Date: Sat Jan 12 2019 - 19:37:42 EST


On January 11, 2019 11:34:34 AM PST, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
>On Fri, Jan 11, 2019 at 11:24 AM <hpa@xxxxxxxxx> wrote:
>>
>> I still don't see why can't simply spin in the #BP handler until the
>patch is complete.
>
>So here's at least one problem:
>
>text_poke_bp()
> text_poke(addr, &int3, sizeof(int3));
> *interrupt*
> interrupt has a static call
> *BP*
> poke_int3_handler
> *BOOM*
>
>Note how at BOOM we cannot just spin (or return) to wait for the
>'int3' to be switched back. Becuase it never will. Because we are
>interrupting the thing that would do that switch-back.
>
>So we'd have to do the 'text_poke_bp()' sequence with interrupts
>disabled. Which we can't do right now at least, because part of that
>sequence involves that on_each_cpu(do_sync_core) thing, which needs
>interrupts enabled.
>
>See?
>
>Or am I missing something?
>
> Linus

Ok, I was thinking far more about spinning with an IRET and letting the exception be delivered. Patching with interrupts disabled have other problems...
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.