Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 619fe082 authored by Susheel Khiani's avatar Susheel Khiani
Browse files

dma-mapping: Check for valid IOVA address



We might fail in alloc_iova if we run out
of virtual addresses in pool. Currently,
if we fail in alloc_iova we are not checking
for return value and directly going ahead
and mapping invalid IOVA address. Fix this
by explicitly checking for return value
from alloc_iova.

Change-Id: I7681d13b75f47a86f0b0b6cbf4b8405a7528ff66
Signed-off-by: default avatarSusheel Khiani <skhiani@codeaurora.org>
parent 2be5ff68
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1697,6 +1697,12 @@ int arm_iommu_map_sg(struct device *dev, struct scatterlist *sg,
		total_length += s->length;

	iova = __alloc_iova(mapping, total_length);

	if (iova == DMA_ERROR_CODE) {
		dev_err(dev, "Couldn't allocate iova for sg %p\n", sg);
		return 0;
	}

	ret = iommu_map_sg(mapping->domain, iova, sg, nents, prot);
	if (ret != total_length) {
		__free_iova(mapping, iova, total_length);