forked from luck/tmp_suning_uos_patched
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: Russell King <linux@arm.linux.org.uk> Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
This commit is contained in:
parent
7e20b6f39a
commit
66cf402bd9
@ -72,7 +72,7 @@ static size_t sgtable_len(const struct sg_table *sgt)
|
|||||||
for_each_sg(sgt->sgl, sg, sgt->nents, i) {
|
for_each_sg(sgt->sgl, sg, sgt->nents, i) {
|
||||||
size_t bytes;
|
size_t bytes;
|
||||||
|
|
||||||
bytes = sg_dma_len(sg);
|
bytes = sg->length;
|
||||||
|
|
||||||
if (!iopgsz_ok(bytes)) {
|
if (!iopgsz_ok(bytes)) {
|
||||||
pr_err("%s: sg[%d] not iommu pagesize(%x)\n",
|
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;
|
int err;
|
||||||
|
|
||||||
pa = sg_phys(sg);
|
pa = sg_phys(sg);
|
||||||
bytes = sg_dma_len(sg);
|
bytes = sg->length;
|
||||||
|
|
||||||
BUG_ON(bytes != PAGE_SIZE);
|
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;
|
struct iotlb_entry e;
|
||||||
|
|
||||||
pa = sg_phys(sg);
|
pa = sg_phys(sg);
|
||||||
bytes = sg_dma_len(sg);
|
bytes = sg->length;
|
||||||
|
|
||||||
flags &= ~IOVMF_PGSZ_MASK;
|
flags &= ~IOVMF_PGSZ_MASK;
|
||||||
pgsz = bytes_to_iopgsz(bytes);
|
pgsz = bytes_to_iopgsz(bytes);
|
||||||
|
Loading…
Reference in New Issue
Block a user