KVM: SVM: Fix sev_pin_memory() error checks in SEV migration utilities
Use IS_ERR() instead of checking for a NULL pointer when querying for sev_pin_memory() failures. sev_pin_memory() always returns an error code cast to a pointer, or a valid pointer; it never returns NULL. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Cc: Steve Rutherford <srutherford@google.com> Cc: Brijesh Singh <brijesh.singh@amd.com> Cc: Ashish Kalra <ashish.kalra@amd.com> Fixes:d3d1af85e2
("KVM: SVM: Add KVM_SEND_UPDATE_DATA command") Fixes:15fb7de1a7
("KVM: SVM: Add KVM_SEV_RECEIVE_UPDATE_DATA command") Signed-off-by: Sean Christopherson <seanjc@google.com> Message-Id: <20210506175826.2166383-3-seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
committed by
Paolo Bonzini
parent
b4a693924a
commit
c7a1b2b678
@ -1271,8 +1271,8 @@ static int sev_send_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
|
|||||||
/* Pin guest memory */
|
/* Pin guest memory */
|
||||||
guest_page = sev_pin_memory(kvm, params.guest_uaddr & PAGE_MASK,
|
guest_page = sev_pin_memory(kvm, params.guest_uaddr & PAGE_MASK,
|
||||||
PAGE_SIZE, &n, 0);
|
PAGE_SIZE, &n, 0);
|
||||||
if (!guest_page)
|
if (IS_ERR(guest_page))
|
||||||
return -EFAULT;
|
return PTR_ERR(guest_page);
|
||||||
|
|
||||||
/* allocate memory for header and transport buffer */
|
/* allocate memory for header and transport buffer */
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
@ -1463,11 +1463,12 @@ static int sev_receive_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
|
|||||||
data.trans_len = params.trans_len;
|
data.trans_len = params.trans_len;
|
||||||
|
|
||||||
/* Pin guest memory */
|
/* Pin guest memory */
|
||||||
ret = -EFAULT;
|
|
||||||
guest_page = sev_pin_memory(kvm, params.guest_uaddr & PAGE_MASK,
|
guest_page = sev_pin_memory(kvm, params.guest_uaddr & PAGE_MASK,
|
||||||
PAGE_SIZE, &n, 0);
|
PAGE_SIZE, &n, 0);
|
||||||
if (!guest_page)
|
if (IS_ERR(guest_page)) {
|
||||||
|
ret = PTR_ERR(guest_page);
|
||||||
goto e_free_trans;
|
goto e_free_trans;
|
||||||
|
}
|
||||||
|
|
||||||
/* The RECEIVE_UPDATE_DATA command requires C-bit to be always set. */
|
/* The RECEIVE_UPDATE_DATA command requires C-bit to be always set. */
|
||||||
data.guest_address = (page_to_pfn(guest_page[0]) << PAGE_SHIFT) + offset;
|
data.guest_address = (page_to_pfn(guest_page[0]) << PAGE_SHIFT) + offset;
|
||||||
|
Reference in New Issue
Block a user