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: Susheel Khiani <skhiani@codeaurora.org>
This commit is contained in:
parent
06ae5fe9fc
commit
ece4a53416
1 changed files with 6 additions and 0 deletions
|
@ -1738,6 +1738,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);
|
||||
|
|
Loading…
Add table
Reference in a new issue