X-Git-Url: https://git.stricted.de/?a=blobdiff_plain;f=drivers%2Fiommu%2Fdma-iommu.c;h=347a3c17f73a6ff9ed5acde668c9fb5df1b3a5cb;hb=2d93d7bb63e733fd35673b6909faf18c382f079a;hp=72d6182666cbd24ba785fc59572c655b6f0c2c8f;hpb=c0cb1393459598977cb1b919da5ddf6b2833c155;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index 72d6182666cb..347a3c17f73a 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -68,7 +68,8 @@ void iommu_put_dma_cookie(struct iommu_domain *domain) if (!iovad) return; - put_iova_domain(iovad); + if (iovad->granule) + put_iova_domain(iovad); kfree(iovad); domain->iova_cookie = NULL; } @@ -403,7 +404,7 @@ static int __finalise_sg(struct device *dev, struct scatterlist *sg, int nents, unsigned int s_length = sg_dma_len(s); unsigned int s_dma_len = s->length; - s->offset = s_offset; + s->offset += s_offset; s->length = s_length; sg_dma_address(s) = dma_addr + s_offset; dma_addr += s_dma_len; @@ -422,7 +423,7 @@ static void __invalidate_sg(struct scatterlist *sg, int nents) for_each_sg(sg, s, nents, i) { if (sg_dma_address(s) != DMA_ERROR_CODE) - s->offset = sg_dma_address(s); + s->offset += sg_dma_address(s); if (sg_dma_len(s)) s->length = sg_dma_len(s); sg_dma_address(s) = DMA_ERROR_CODE;