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

Commit 3ca340cf authored by Krishnankutty Kolathappilly's avatar Krishnankutty Kolathappilly Committed by Soundrapandian Jeyaprakash
Browse files

msm: camera: Avoid calling unmap hardware virtual address



Avoid calling unmap hardware virtual address if the buffer is
not accessed by hardware. MAP and UNMAP both needs to be protected
by shared access and hardware access flags. Release buffers
failure observed in userspace on trying to unmap buffers that are
not allocated with hardware access

Change-Id: I26f9f85f8beb57f8a57ec90443771f20cdb5cbdd
Signed-off-by: default avatarKrishnankutty Kolathappilly <kkolatha@codeaurora.org>
Signed-off-by: default avatarSoundrapandian Jeyaprakash <jsoundra@codeaurora.org>
parent 71ddd6d2
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -722,7 +722,7 @@ static int cam_mem_util_unmap_hw_va(int32_t idx,
static int cam_mem_util_unmap(int32_t idx)
{
	int rc = 0;
	enum cam_smmu_region_id region;
	enum cam_smmu_region_id region = CAM_SMMU_REGION_SHARED;

	if (idx >= CAM_MEM_BUFQ_MAX || idx <= 0) {
		pr_err("Incorrect index\n");
@@ -735,14 +735,17 @@ static int cam_mem_util_unmap(int32_t idx)
		if (tbl.bufq[idx].i_hdl && tbl.bufq[idx].kmdvaddr)
			ion_unmap_kernel(tbl.client, tbl.bufq[idx].i_hdl);

	if (tbl.bufq[idx].flags & CAM_MEM_FLAG_HW_READ_WRITE ||
		tbl.bufq[idx].flags & CAM_MEM_FLAG_HW_SHARED_ACCESS) {

		if (tbl.bufq[idx].flags & CAM_MEM_FLAG_HW_READ_WRITE)
			region = CAM_SMMU_REGION_IO;

		if (tbl.bufq[idx].flags & CAM_MEM_FLAG_HW_SHARED_ACCESS)
			region = CAM_SMMU_REGION_SHARED;

	rc = cam_mem_util_unmap_hw_va(idx,
		region);
		rc = cam_mem_util_unmap_hw_va(idx, region);
	}

	mutex_lock(&tbl.bufq[idx].q_lock);
	tbl.bufq[idx].flags = 0;