]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
virt: sev-guest: Remove is_vmpck_empty() helper
authorNikunj A Dadhania <nikunj@amd.com>
Mon, 6 Jan 2025 12:46:21 +0000 (18:16 +0530)
committerBorislav Petkov (AMD) <bp@alien8.de>
Tue, 7 Jan 2025 07:57:19 +0000 (08:57 +0100)
Remove is_vmpck_empty() which uses a local array allocation to check if the
VMPCK is empty and replace it with memchr_inv() to directly determine if the
VMPCK is empty without additional memory allocation.

  [ bp: Massage commit message. ]

Suggested-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Nikunj A Dadhania <nikunj@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20250106124633.1418972-2-nikunj@amd.com
drivers/virt/coco/sev-guest/sev-guest.c

index b699771be029c3b12ed72f35ecd38793fce676f2..62328d0b2cb6af9bd1af87b41fd16d914ac8c024 100644 (file)
@@ -63,16 +63,6 @@ MODULE_PARM_DESC(vmpck_id, "The VMPCK ID to use when communicating with the PSP.
 /* Mutex to serialize the shared buffer access and command handling. */
 static DEFINE_MUTEX(snp_cmd_mutex);
 
-static bool is_vmpck_empty(struct snp_msg_desc *mdesc)
-{
-       char zero_key[VMPCK_KEY_LEN] = {0};
-
-       if (mdesc->vmpck)
-               return !memcmp(mdesc->vmpck, zero_key, VMPCK_KEY_LEN);
-
-       return true;
-}
-
 /*
  * If an error is received from the host or AMD Secure Processor (ASP) there
  * are two options. Either retry the exact same encrypted request or discontinue
@@ -335,7 +325,7 @@ static int snp_send_guest_request(struct snp_msg_desc *mdesc, struct snp_guest_r
        guard(mutex)(&snp_cmd_mutex);
 
        /* Check if the VMPCK is not empty */
-       if (is_vmpck_empty(mdesc)) {
+       if (!mdesc->vmpck || !memchr_inv(mdesc->vmpck, 0, VMPCK_KEY_LEN)) {
                pr_err_ratelimited("VMPCK is disabled\n");
                return -ENOTTY;
        }
@@ -1024,7 +1014,7 @@ static int __init sev_guest_probe(struct platform_device *pdev)
        }
 
        /* Verify that VMPCK is not zero. */
-       if (is_vmpck_empty(mdesc)) {
+       if (!memchr_inv(mdesc->vmpck, 0, VMPCK_KEY_LEN)) {
                dev_err(dev, "Empty VMPCK%d communication key\n", vmpck_id);
                goto e_unmap;
        }