Messages in this thread | | | Date | Fri, 28 Oct 2022 09:46:43 -0500 | Subject | Re: [PATCH v4 3/4] virt/coco/sev-guest: Remove err in handle_guest_request | From | Tom Lendacky <> |
| |
On 10/24/22 17:46, Dionna Glaze wrote: > The err variable may not be set in the call to snp_issue_guest_request, > yet it is unconditionally written back to fw_err if fw_err is non-null. > This is undefined behavior, and currently returns uninitialized kernel > stack memory to user space. > > The fw_err argument is better to just pass through to > snp_issue_guest_request, so we do that. Since the issue_request's > signature has changed fw_err to exitinfo2, we change the argument name > here. > > Cc: Tom Lendacky <Thomas.Lendacky@amd.com> > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: Joerg Roedel <jroedel@suse.de> > Cc: Peter Gonda <pgonda@google.com> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: Dave Hansen <dave.hansen@linux.intel.com> > > Fixes: fce96cf04430 ("virt: Add SEV-SNP guest driver") > Signed-off-by: Dionna Glaze <dionnaglaze@google.com>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
> --- > drivers/virt/coco/sev-guest/sev-guest.c | 7 ++----- > 1 file changed, 2 insertions(+), 5 deletions(-) > > diff --git a/drivers/virt/coco/sev-guest/sev-guest.c b/drivers/virt/coco/sev-guest/sev-guest.c > index f422f9c58ba7..0508c2f46f6b 100644 > --- a/drivers/virt/coco/sev-guest/sev-guest.c > +++ b/drivers/virt/coco/sev-guest/sev-guest.c > @@ -303,9 +303,8 @@ static int enc_payload(struct snp_guest_dev *snp_dev, u64 seqno, int version, u8 > > static int handle_guest_request(struct snp_guest_dev *snp_dev, u64 exit_code, int msg_ver, > u8 type, void *req_buf, size_t req_sz, void *resp_buf, > - u32 resp_sz, __u64 *fw_err) > + u32 resp_sz, __u64 *exitinfo2) > { > - unsigned long err; > u64 seqno; > int rc; > > @@ -322,9 +321,7 @@ static int handle_guest_request(struct snp_guest_dev *snp_dev, u64 exit_code, in > return rc; > > /* Call firmware to process the request */ > - rc = snp_issue_guest_request(exit_code, &snp_dev->input, &err); > - if (fw_err) > - *fw_err = err; > + rc = snp_issue_guest_request(exit_code, &snp_dev->input, exitinfo2); > > if (rc) > return rc;
| |