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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <cb4aa4c4-11e9-163c-5101-8b0dea336fc1@amd.com>
Date:   Mon, 7 Feb 2022 08:41:47 -0600
From:   Brijesh Singh <brijesh.singh@....com>
To:     Borislav Petkov <bp@...en8.de>
Cc:     brijesh.singh@....com, x86@...nel.org,
        linux-kernel@...r.kernel.org, kvm@...r.kernel.org,
        linux-efi@...r.kernel.org, platform-driver-x86@...r.kernel.org,
        linux-coco@...ts.linux.dev, linux-mm@...ck.org,
        Thomas Gleixner <tglx@...utronix.de>,
        Ingo Molnar <mingo@...hat.com>, Joerg Roedel <jroedel@...e.de>,
        Tom Lendacky <thomas.lendacky@....com>,
        "H. Peter Anvin" <hpa@...or.com>, Ard Biesheuvel <ardb@...nel.org>,
        Paolo Bonzini <pbonzini@...hat.com>,
        Sean Christopherson <seanjc@...gle.com>,
        Vitaly Kuznetsov <vkuznets@...hat.com>,
        Jim Mattson <jmattson@...gle.com>,
        Andy Lutomirski <luto@...nel.org>,
        Dave Hansen <dave.hansen@...ux.intel.com>,
        Sergio Lopez <slp@...hat.com>, Peter Gonda <pgonda@...gle.com>,
        Peter Zijlstra <peterz@...radead.org>,
        Srinivas Pandruvada <srinivas.pandruvada@...ux.intel.com>,
        David Rientjes <rientjes@...gle.com>,
        Dov Murik <dovmurik@...ux.ibm.com>,
        Tobin Feldman-Fitzthum <tobin@....com>,
        Michael Roth <michael.roth@....com>,
        Vlastimil Babka <vbabka@...e.cz>,
        "Kirill A . Shutemov" <kirill@...temov.name>,
        Andi Kleen <ak@...ux.intel.com>,
        "Dr . David Alan Gilbert" <dgilbert@...hat.com>,
        brijesh.ksingh@...il.com, tony.luck@...el.com, marcorr@...gle.com,
        sathyanarayanan.kuppuswamy@...ux.intel.com
Subject: Re: [PATCH v9 41/43] virt: Add SEV-SNP guest driver



On 2/6/22 4:39 PM, Borislav Petkov wrote:

> And once you do, do "make htmldocs" to see whether it complains about
> some formatting issues or other errors etc.
> 
> /me goes and does it...
> 
> Ah, here we go:
> 
> Documentation/virt/coco/sevguest.rst:48: WARNING: Inline emphasis start-string without end-string.
> Documentation/virt/coco/sevguest.rst:51: WARNING: Inline emphasis start-string without end-string.
> Documentation/virt/coco/sevguest.rst:55: WARNING: Inline emphasis start-string without end-string.
> Documentation/virt/coco/sevguest.rst:57: WARNING: Definition list ends without a blank line; unexpected unindent.
> 
> There's something it doesn't like about the struct. Yeah, when I look at
> the html output, it is all weird and not monospaced...

I will fix those in next rev.


>> +
>> +The guest ioctl should be issued on a file descriptor of the /dev/sev-guest device.
>> +The ioctl accepts struct snp_user_guest_request. The input and output structure is
>> +specified through the req_data and resp_data field respectively. If the ioctl fails
>> +to execute due to a firmware error, then fw_err code will be set otherwise the
>> +fw_err will be set to 0xff.
> 
> fw_err is u64. What does 0xff mean? Everything above the least
> significant byte is reserved 0?
> 

Yep, I will explicitly say that it should be set to 0x00000000000000FF.


>> diff --git a/drivers/virt/coco/sevguest/Kconfig b/drivers/virt/coco/sevguest/Kconfig
>> new file mode 100644
>> index 000000000000..07ab9ec6471c
>> --- /dev/null
>> +++ b/drivers/virt/coco/sevguest/Kconfig
>> @@ -0,0 +1,12 @@
>> +config SEV_GUEST
>> +	tristate "AMD SEV Guest driver"
>> +	default y
> 
> Definitely not. We don't enable drivers by default unless they're
> ubiquitous.
> 

Randy asked me similar question on v7, and here is my response to it.

https://lore.kernel.org/linux-mm/e6b412e4-f38e-d212-f52a-e7bdc9a26eff@infradead.org/

Let me know if you still think that we should make it 'n'. I am not dead 
against it but I have feeling that once distro's starts building SNP 
aware guest kernel, then we may get asked to enable it by default so 
that attestation report can be obtained by the initial ramdisk.



>> +	 */
>> +	if (count >= UINT_MAX) {
>> +		pr_err_ratelimited("SNP guest request message sequence counter overflow\n");
> 
> How does error message help the user? Is she supposed to reboot the
> machine or so?
> 
> Because it sounds to me like if this goes over 32-bit, this driver stops
> working. So what resets those sequence numbers?

After this condition is met, a guest will no longer get the attestation 
report. It's up to the userspace to reboot the guest or continue without 
attestation.

The only thing that will reset the counter is re-launching the guest to 
go through the entire PSP initialization sequence once again.


>> +
>> +	crypto->iv_len = crypto_aead_ivsize(crypto->tfm);
>> +	if (crypto->iv_len < 12) {
>> +		dev_err(snp_dev->dev, "IV length is less than 12.\n");
> 
> And? < 12 is bad? Make that error message more user-friendly pls.
> 
Okay.


> 
> The order of those free calls needs to be the opposite of the kmallocs
> above.
> 
Okay


>> +
>> +	/* Message version must be non-zero */
>> +	if (!input.msg_version)
>> +		return -EINVAL;
>> +
>> +	mutex_lock(&snp_cmd_mutex);
> 
> That mutex probably is to be held while issuing SNP commands but then
> you hold it here already for...
> 
>> +
>> +	/* Check if the VMPCK is not empty */
>> +	if (is_vmpck_empty(snp_dev)) {
> 
> ... this here which is not really a SNP command issuing.
> 
> Should that mutex be grabbed only around handle_guest_request() above or
> is it supposed to protect more stuff?


Yep, it need to protect more stuff.

We allocate a shared buffers (request, response, cert-chain) that gets 
populated before issuing the command, and then we copy the result from 
reponse shared to callers buffer after the command completes. So, we 
also want to ensure that the shared buffer is not touched before the 
previous ioctl is finished.


-Brijesh

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ