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

Commit a12154b8 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ADSPRPC: validate dma phy address after mapping"

parents 7a5e4863 93f319a2
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -807,13 +807,24 @@ static int fastrpc_mmap_create(struct fastrpc_file *fl, int fd,
			goto bail;
		}
		map->phys = sg_dma_address(map->table->sgl);

		if (sess->smmu.cb) {
			map->phys += ((uint64_t)sess->smmu.cb << 32);
			map->size = sg_dma_len(map->table->sgl);
		} else {
			map->size = buf_page_size(len);
		}

		vmid = fl->apps->channel[fl->cid].vmid;
		if (!sess->smmu.enabled && !vmid) {
			VERIFY(err, map->phys >= me->range.addr &&
			map->phys + map->size <=
			me->range.addr + me->range.size);
			if (err) {
				pr_err("adsprpc: mmap fail out of range\n");
				goto bail;
			}
		}
		if (vmid) {
			int srcVM[1] = {VMID_HLOS};
			int destVM[2] = {VMID_HLOS, vmid};
@@ -3414,6 +3425,8 @@ static int fastrpc_probe(struct platform_device *pdev)
					srcVM, 1, destVM, destVMperm, 4));
			if (err)
				goto bail;
			me->range.addr = range.addr;
			me->range.size = range.size;
		}
		return 0;
	}