Re: [PATCH] x86/retpoline: Fill return stack buffer on vmexit

From: Tom Lendacky
Date: Thu Jan 11 2018 - 19:34:47 EST


On 1/10/2018 6:14 PM, Tom Lendacky wrote:
> On 1/10/2018 5:47 PM, David Woodhouse wrote:
>> On Wed, 2018-01-10 at 22:51 +0000, David Woodhouse wrote:
>>> In accordance with the Intel and AMD documentation, we need to overwrite
>>> all entries in the RSB on exiting a guest, to prevent malicious branch
>>> target predictions from affecting the host kernel. This is needed both
>>> for retpoline and for IBRS.
>>>
>>> Signed-off-by: David Woodhouse <dwmw@xxxxxxxxxxxx>
>>> ---
>>> Untested in this form although it's a variant on what we've had already.
>>> I have an army of machines willing to do my bidding but nested virt
>>> is non-trivial and I figure I might as well post it as someone else
>>> can probably test it in less than the time it takes me to work out how.
>>
>> Now smoke tested with Intel VT-x, but not yet on AMD. Tom, would you be
>> able to do that?
>
> Yes, I'll try to get to it as soon as I can, but it might be tomorrow
> (morning).

Sorry for the delay. This is working on my system for normal virt, but is
failing with nested virt. However, it does not appear that this patch is
the problem. I've gone back to commit 8d56eff266f3 in the x86/pti tree
(before retpoline, etc.) and nested virt is still broke. Not sure how
much time I want to spend digging through this since nested virt on
4.15-rc7 works.

Thanks,
Tom

>
> Thanks,
> Tom
>
>>
>>
>>> This implements the most pressing of the RSB stuffing documented
>>> by dhansen (based our discussions) in https://goo.gl/pXbvBE