On 08/04/21 18:04, Tom Lendacky wrote:
+ if (!err || !sev_es_guest(vcpu->kvm) || !WARN_ON_ONCE(svm->ghcb))
This should be WARN_ON_ONCE(!svm->ghcb), otherwise you'll get the right
result, but get a stack trace immediately.
Doh, yep.
Actually, because of the "or's", this needs to be:
if (!err || !sev_es_guest(vcpu->kvm) || (sev_es_guest(vcpu->kvm) && WARN_ON_ONCE(!svm->ghcb)))
No, || cuts the right-hand side if the left-hand side is true. So:
- if err == 0, the rest is not evaluated
- if !sev_es_guest(vcpu->kvm), WARN_ON_ONCE(!svm->ghcb) is not evaluated
Paolo