Re: x86/paravirt: Detect over-sized patching bugs in paravirt_patch_call()

From: Peter Zijlstra
Date: Thu Apr 25 2019 - 06:22:42 EST


On Thu, Apr 25, 2019 at 11:50:39AM +0200, Ingo Molnar wrote:
>
> * Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>
> > On Thu, Apr 25, 2019 at 11:17:17AM +0200, Ingo Molnar wrote:
> > > It basically means that we silently won't do any patching and the kernel
> > > will crash later on in mysterious ways, because paravirt patching is
> > > usually relied on.
> >
> > That's OK. The compiler emits an indirect CALL/JMP to the pv_ops
> > structure contents. That _should_ stay valid and function correctly at
> > all times.
>
> It might result in a correctly executing kernel in terms of code
> generation, but it doesn't result in a viable kernel: some of the places
> rely on the patching going through and don't know what to do when it
> doesn't and misbehave or crash in interesting ways.
>
> Guess how I know this. ;-)

What sites would that be? It really should work AFAIK.