Commit ede885ec authored by David Rientjes's avatar David Rientjes Committed by Paolo Bonzini
Browse files

kvm: svm: fix potential get_num_contig_pages overflow



get_num_contig_pages() could potentially overflow int so make its type
consistent with its usage.

Reported-by: default avatarCfir Cohen <cfir@google.com>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 79a3aaa7
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -6422,11 +6422,11 @@ e_free:
	return ret;
}

static int get_num_contig_pages(int idx, struct page **inpages,
				unsigned long npages)
static unsigned long get_num_contig_pages(unsigned long idx,
				struct page **inpages, unsigned long npages)
{
	unsigned long paddr, next_paddr;
	int i = idx + 1, pages = 1;
	unsigned long i = idx + 1, pages = 1;

	/* find the number of contiguous pages starting from idx */
	paddr = __sme_page_pa(inpages[idx]);
@@ -6445,12 +6445,12 @@ static int get_num_contig_pages(int idx, struct page **inpages,

static int sev_launch_update_data(struct kvm *kvm, struct kvm_sev_cmd *argp)
{
	unsigned long vaddr, vaddr_end, next_vaddr, npages, size;
	unsigned long vaddr, vaddr_end, next_vaddr, npages, pages, size, i;
	struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
	struct kvm_sev_launch_update_data params;
	struct sev_data_launch_update_data *data;
	struct page **inpages;
	int i, ret, pages;
	int ret;

	if (!sev_guest(kvm))
		return -ENOTTY;