Message ID | 20250106124633.1418972-2-nikunj@amd.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Add Secure TSC support for SNP guests | expand |
On 1/6/25 06:46, Nikunj A Dadhania wrote: > Remove the is_vmpck_empty() helper function, which uses a local array > allocation to check if the VMPCK is empty. Replace it with memchr_inv() to > directly determine if the VMPCK is empty without additional memory > allocation. > > Suggested-by: Borislav Petkov <bp@alien8.de> > Signed-off-by: Nikunj A Dadhania <nikunj@amd.com> > --- > drivers/virt/coco/sev-guest/sev-guest.c | 14 ++------------ > 1 file changed, 2 insertions(+), 12 deletions(-) > > diff --git a/drivers/virt/coco/sev-guest/sev-guest.c b/drivers/virt/coco/sev-guest/sev-guest.c > index b699771be029..62328d0b2cb6 100644 > --- a/drivers/virt/coco/sev-guest/sev-guest.c > +++ b/drivers/virt/coco/sev-guest/sev-guest.c > @@ -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; > -} I still like the helper, but just using memchr_inv() inside it instead, e.g.: return !mdesc->vmpck || !memchr_inv(mdesc->vmpck, 0, VMPCK_KEY_LEN); But either way works for me. Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com> > - > /* > * 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; > }
diff --git a/drivers/virt/coco/sev-guest/sev-guest.c b/drivers/virt/coco/sev-guest/sev-guest.c index b699771be029..62328d0b2cb6 100644 --- a/drivers/virt/coco/sev-guest/sev-guest.c +++ b/drivers/virt/coco/sev-guest/sev-guest.c @@ -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; }
Remove the is_vmpck_empty() helper function, which uses a local array allocation to check if the VMPCK is empty. Replace it with memchr_inv() to directly determine if the VMPCK is empty without additional memory allocation. Suggested-by: Borislav Petkov <bp@alien8.de> Signed-off-by: Nikunj A Dadhania <nikunj@amd.com> --- drivers/virt/coco/sev-guest/sev-guest.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)