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

Commit 66cf402b authored by Ohad Ben-Cohen's avatar Ohad Ben-Cohen
Browse files

omap: iovmm: s/sg_dma_len(sg)/sg->length/



iovmm is erroneously using sg_dma_len with unmapped (DMA API-wise)
SG entries, and will break if CONFIG_NEED_SG_DMA_LENGTH is enabled.

Fix that by using sg->length instead.

Reported-by: default avatarRussell King <linux@arm.linux.org.uk>
Tested-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarOhad Ben-Cohen <ohad@wizery.com>
parent 7e20b6f3
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ static size_t sgtable_len(const struct sg_table *sgt)
	for_each_sg(sgt->sgl, sg, sgt->nents, i) {
		size_t bytes;

		bytes = sg_dma_len(sg);
		bytes = sg->length;

		if (!iopgsz_ok(bytes)) {
			pr_err("%s: sg[%d] not iommu pagesize(%x)\n",
@@ -198,7 +198,7 @@ static void *vmap_sg(const struct sg_table *sgt)
		int err;

		pa = sg_phys(sg);
		bytes = sg_dma_len(sg);
		bytes = sg->length;

		BUG_ON(bytes != PAGE_SIZE);

@@ -476,7 +476,7 @@ static int map_iovm_area(struct iommu *obj, struct iovm_struct *new,
		struct iotlb_entry e;

		pa = sg_phys(sg);
		bytes = sg_dma_len(sg);
		bytes = sg->length;

		flags &= ~IOVMF_PGSZ_MASK;
		pgsz = bytes_to_iopgsz(bytes);