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

Commit 57004b5b authored by Aniket Masule's avatar Aniket Masule
Browse files

msm: vidc: Add state check to allow flush command



Entry field from clock data structure gets initialized with
codec data during state transition from MSM_VIDC_CORE_INIT_DONE
to MSM_VIDC_OPEN. When flush is called before this transaction,
it calls msm_clock_data_reset where mentioned field is getting
accessed, which results in uninitialized data access. Add state
check to ensure the command is handled in right sequence.

Change-Id: Ic98221cbfe465415d89a0e2891f8af65f584f1dc
Signed-off-by: default avatarAniket Masule <amasule@codeaurora.org>
parent fc41d62c
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1067,7 +1067,7 @@ void msm_clock_data_reset(struct msm_vidc_inst *inst)

	dprintk(VIDC_DBG, "Init DCVS Load\n");

	if (!inst || !inst->core) {
	if (!inst || !inst->core || !inst->clk_data.entry) {
		dprintk(VIDC_ERR, "%s Invalid args: Inst = %pK\n",
			__func__, inst);
		return;
+8 −0
Original line number Diff line number Diff line
@@ -5269,6 +5269,14 @@ int msm_comm_flush(struct msm_vidc_inst *inst, u32 flags)
				"Invalid params, inst %pK\n", inst);
		return -EINVAL;
	}

	if (inst->state < MSM_VIDC_OPEN_DONE) {
		dprintk(VIDC_ERR,
			"Invalid state to call flush, inst %pK, state %#x\n",
			inst, inst->state);
		return -EINVAL;
	}

	core = inst->core;
	hdev = core->device;