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

Commit 53c61498 authored by Govindaraj Rajagopal's avatar Govindaraj Rajagopal
Browse files

msm: vidc: acquire lock for complete register sequence



Register pkt is queued to firmware, and it is processed
and register_done is getting called from reverse thread
before buffer is added to list in forward thread. To
avoid this race issue, acquired the cvpbuf.lock before
posting register command to firmware.

Signed-off-by: default avatarGovindaraj Rajagopal <grajagop@codeaurora.org>
parent 24d1ef86
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -377,6 +377,7 @@ static int msm_cvp_register_buffer(struct msm_vidc_inst *inst,
		goto exit;
	}

	mutex_lock(&inst->cvpbufs.lock);
	memset(&vbuf, 0, sizeof(struct vidc_register_buffer));
	vbuf.index = buf->index;
	vbuf.type = get_hal_buftype(__func__, buf->type, inst->sid);
@@ -388,9 +389,9 @@ static int msm_cvp_register_buffer(struct msm_vidc_inst *inst,
			(void *)inst->session, &vbuf);
	if (rc) {
		print_cvp_buffer(VIDC_ERR, "register failed", inst, cbuf);
		mutex_unlock(&inst->cvpbufs.lock);
		goto exit;
	}
	mutex_lock(&inst->cvpbufs.lock);
	list_add_tail(&cbuf->list, &inst->cvpbufs.list);
	mutex_unlock(&inst->cvpbufs.lock);
	return rc;