Thread (18 messages) 18 messages, 4 authors, 2021-09-29

Re: [RFC PATCH 3/3] nSVM: use svm->nested.save to load vmcb12 registers and avoid TOC/TOU races

From: Maxim Levitsky <hidden>
Date: 2021-09-14 09:12:36
Also in: lkml

On Tue, 2021-09-14 at 12:02 +0300, Maxim Levitsky wrote:
On Tue, 2021-09-14 at 10:20 +0200, Emanuele Giuseppe Esposito wrote:
quoted
On 12/09/2021 12:42, Maxim Levitsky wrote:
quoted
quoted
  
-	if (!nested_vmcb_valid_sregs(vcpu, &vmcb12->save) ||
+	if (!nested_vmcb_valid_sregs(vcpu, &svm->nested.save) ||
  	    !nested_vmcb_check_controls(vcpu, &svm->nested.ctl)) {
If you use a different struct for the copied fields, then it makes
sense IMHO to drop the 'control' parameter from nested_vmcb_check_controls,
and just use the svm->nested.save there directly.
Ok, what you say in patch 2 makes sense to me. I can create a new struct 
vmcb_save_area_cached, but I need to keep nested.ctl because 1) it is 
used also elsewhere, and different fields from the one checked here are 
read/set and 2) using another structure (or the same 
Yes, keep nested.ctl, since vast majority of the fields are copied I think.
But actually that you mention it, I'll say why not to create vmcb_control_area_cached
as well indeed and change the type of svm->nested.save to it. (in a separate patch)

I see what you mean that we modify it a bit (but we shoudn't to be honest) and such, but
all of this can be fixed.

The advantage of having vmcb_control_area_cached is that it becomes impossible to use
by mistake a non copied field from the guest.

It would also emphasize that this stuff came from the guest and should be treated as
a toxic waste.

Note again that this should be done if we agree as a separate patch.
Best regards,
	Maxim Levitsky

quoted
vmcb_save_area_cached) in its place would just duplicate the same fields 
of nested.ctl, creating even more confusion and possible inconsistency.

Let me know if you disagree.

Thank you,
Emanuele
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help