Unverified Commit 3023eb5c authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!8373 dma-direct: Leak pages on dma_set_decrypted() failure

parents 87c99a27 d5244993
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -243,7 +243,7 @@ void *dma_direct_alloc(struct device *dev, size_t size,
		err = set_memory_decrypted((unsigned long)ret,
					   PFN_UP(size));
		if (err)
			goto out_free_pages;
			goto out_leak_pages;
	}

	memset(ret, 0, size);
@@ -270,6 +270,8 @@ void *dma_direct_alloc(struct device *dev, size_t size,
out_free_pages:
	__dma_direct_free_pages(dev, page, size);
	return NULL;
out_leak_pages:
	return NULL;
}

void dma_direct_free(struct device *dev, size_t size,
@@ -333,7 +335,7 @@ struct page *dma_direct_alloc_pages(struct device *dev, size_t size,
	ret = page_address(page);
	if (force_dma_unencrypted(dev)) {
		if (set_memory_decrypted((unsigned long)ret, PFN_UP(size)))
			goto out_free_pages;
			goto out_leak_pages;
	}
	memset(ret, 0, size);
	*dma_handle = phys_to_dma_direct(dev, page_to_phys(page));
@@ -341,6 +343,8 @@ struct page *dma_direct_alloc_pages(struct device *dev, size_t size,
out_free_pages:
	__dma_direct_free_pages(dev, page, size);
	return NULL;
out_leak_pages:
	return NULL;
}

void dma_direct_free_pages(struct device *dev, size_t size,