Re: [patch 00/38] x86/retbleed: Call depth tracking mitigation

From: Joao Moreira
Date: Tue Jul 19 2022 - 13:58:45 EST


Clang always uses r11 for the indirect call with retpolines, so we'd
need to use another register. Nevertheless, splitting the constant into
two instructions would solve the call target gadget issue.

Yeah, it clicked later yesterday. But, FWIIW, R10 is also considered a scratch register, although used for passing static chain pointers which I think is not a thing in kernel context. Last case scenario we can always do liveness analysis and I doubt we'll have a significant (if any) number of spills.

If we are comparing through registers, I would suggest using a sub instruction instead of a cmp, as this will destroy the contents of the register and prevent it from being re-used on further unprotected indirect branches, if any exists.