]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
x86/sev: Allocate request in TSC_INFO_REQ on stack
authorAlexey Kardashevskiy <aik@amd.com>
Wed, 11 Jun 2025 04:08:40 +0000 (14:08 +1000)
committerBorislav Petkov (AMD) <bp@alien8.de>
Wed, 18 Jun 2025 20:55:39 +0000 (22:55 +0200)
Allocate a 88 byte request structure on stack and skip needless
kzalloc/kfree.

While at this, correct indent.

No functional change intended.

Signed-off-by: Alexey Kardashevskiy <aik@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Dionna Glaze <dionnaglaze@google.com>
Link: https://lore.kernel.org/20250611040842.2667262-3-aik@amd.com
arch/x86/coco/sev/core.c

index cf91cb4e2c4761f811d93b53af590fecb3742247..068653865bfb658fda060754da9d29795d687b1a 100644 (file)
@@ -2069,7 +2069,7 @@ static int __init snp_get_tsc_info(void)
        struct snp_tsc_info_resp *tsc_resp;
        struct snp_tsc_info_req *tsc_req;
        struct snp_msg_desc *mdesc;
-       struct snp_guest_req *req;
+       struct snp_guest_req req = {};
        int rc = -ENOMEM;
 
        tsc_req = kzalloc(sizeof(*tsc_req), GFP_KERNEL);
@@ -2085,28 +2085,24 @@ static int __init snp_get_tsc_info(void)
        if (!tsc_resp)
                goto e_free_tsc_req;
 
-       req = kzalloc(sizeof(*req), GFP_KERNEL);
-       if (!req)
-               goto e_free_tsc_resp;
-
        mdesc = snp_msg_alloc();
        if (IS_ERR_OR_NULL(mdesc))
-               goto e_free_req;
+               goto e_free_tsc_resp;
 
        rc = snp_msg_init(mdesc, snp_vmpl);
        if (rc)
                goto e_free_mdesc;
 
-       req->msg_version = MSG_HDR_VER;
-       req->msg_type = SNP_MSG_TSC_INFO_REQ;
-       req->vmpck_id = snp_vmpl;
-       req->req_buf = tsc_req;
-       req->req_sz = sizeof(*tsc_req);
-       req->resp_buf = (void *)tsc_resp;
-       req->resp_sz = sizeof(*tsc_resp) + AUTHTAG_LEN;
-       req->exit_code = SVM_VMGEXIT_GUEST_REQUEST;
+       req.msg_version = MSG_HDR_VER;
+       req.msg_type = SNP_MSG_TSC_INFO_REQ;
+       req.vmpck_id = snp_vmpl;
+       req.req_buf = tsc_req;
+       req.req_sz = sizeof(*tsc_req);
+       req.resp_buf = (void *)tsc_resp;
+       req.resp_sz = sizeof(*tsc_resp) + AUTHTAG_LEN;
+       req.exit_code = SVM_VMGEXIT_GUEST_REQUEST;
 
-       rc = snp_send_guest_request(mdesc, req);
+       rc = snp_send_guest_request(mdesc, &req);
        if (rc)
                goto e_request;
 
@@ -2127,9 +2123,7 @@ e_request:
        memzero_explicit(tsc_resp, sizeof(*tsc_resp) + AUTHTAG_LEN);
 e_free_mdesc:
        snp_msg_free(mdesc);
-e_free_req:
-       kfree(req);
- e_free_tsc_resp:
+e_free_tsc_resp:
        kfree(tsc_resp);
 e_free_tsc_req:
        kfree(tsc_req);