lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <0a02006d-bb76-b2dd-bc90-afc79003abee@amd.com>
Date:   Mon, 30 Oct 2017 06:49:29 -0500
From:   Brijesh Singh <brijesh.singh@....com>
To:     Borislav Petkov <bp@...en8.de>
Cc:     brijesh.singh@....com, kvm@...r.kernel.org,
        Thomas Gleixner <tglx@...utronix.de>,
        Ingo Molnar <mingo@...hat.com>,
        "H. Peter Anvin" <hpa@...or.com>,
        Paolo Bonzini <pbonzini@...hat.com>,
        Radim Krčmář <rkrcmar@...hat.com>,
        Joerg Roedel <joro@...tes.org>,
        Tom Lendacky <thomas.lendacky@....com>, x86@...nel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [Part2 PATCH v6 25/38] KVM: SVM: Add KVM_SEV_INIT command



On 10/27/17 3:24 PM, Borislav Petkov wrote:
...
>> +
>>  static __exit void svm_hardware_unsetup(void)
>>  {
>>  	int cpu;
>>  
>> +	if (svm_sev_enabled())
>> +		sev_hardware_unsetup();
> Move that svm_sev_enabled() check into the function.

Sure, I will remove the check.

>
>> +
>>  	for_each_possible_cpu(cpu)
>>  		svm_cpu_uninit(cpu);
>>  
>> @@ -1361,6 +1389,9 @@ static void init_vmcb(struct vcpu_svm *svm)
>>  		svm->vmcb->control.int_ctl |= V_GIF_ENABLE_MASK;
>>  	}
>>  
>> +	if (sev_guest(svm->vcpu.kvm))
>> +		svm->vmcb->control.nested_ctl |= SVM_NESTED_CTL_SEV_ENABLE;
>> +
>>  	mark_all_dirty(svm->vmcb);
>>  
>>  	enable_gif(svm);
>> @@ -1443,6 +1474,28 @@ static int avic_init_backing_page(struct kvm_vcpu *vcpu)
>>  	return 0;
>>  }
>>  
>> +static void sev_asid_free(struct kvm *kvm)
>> +{
>> +	struct kvm_sev_info *sev = &kvm->arch.sev_info;
>> +	int pos, asid;
>> +
>> +	if (!svm_sev_enabled())
>> +		return;
> You're already checking !sev_guest() below - no need to do the
> svm_sev_enabled() check again.

Agreed, I will remove it.


>> +{
>> +	int pos;
>> +
>> +	if (!svm_sev_enabled())
>> +		return -EINVAL;
> You already checked that in svm_mem_enc_op() - no need to do it again.

Agreed, I will remove it
>
>> +	pos = find_first_zero_bit(sev_asid_bitmap, max_sev_asid);
>> +	if (pos >= max_sev_asid)
>> +		return -EBUSY;
>> +
>> +	set_bit(pos, sev_asid_bitmap);
>> +	return pos + 1;
>> +}
>> +
>> +static int sev_guest_init(struct kvm *kvm, struct kvm_sev_cmd *argp)
>> +{
>> +	struct kvm_sev_info *sev = &kvm->arch.sev_info;
>> +	int asid, ret;
>> +
>> +	ret = sev_platform_init(NULL, &argp->error);
>> +	if (ret)
>> +		return ret;
>> +
>> +	ret = -EBUSY;
>> +	asid = sev_asid_new();
> This operation is cheaper so do it first and then sev_platform_init()
> so that in case sev_asid_new() fails, you don't "toggle" the PSP
> unnecessarily.

Sure, I will change the order.


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ