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

Commit af35ac1f authored by Maheshwar Ajja's avatar Maheshwar Ajja
Browse files

msm: vidc: Free up remaining memory in close session



Call msm_comm_smem_free() before freeing the list node
to free the buffer associated with the node. The function
is void if the buffer is already free'd.

CRs-Fixed: 2111809
Change-Id: Idce3d1457646744b71c07f8d698c0fbf1ff9d0d2
Signed-off-by: default avatarMaheshwar Ajja <majja@codeaurora.org>
parent d14a930f
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -603,22 +603,25 @@ static int free_ion_mem(struct smem_client *client, struct msm_smem *mem)
		__func__, mem->handle, mem->device_addr, mem->size,
		mem->kvaddr, mem->buffer_type);

	if (mem->device_addr)
	if (mem->device_addr) {
		msm_ion_put_device_address(client, mem->handle, mem->flags,
			&mem->mapping_info, mem->buffer_type);
		mem->device_addr = 0x0;
	}

	if (mem->kvaddr)
	if (mem->kvaddr) {
		ion_unmap_kernel(client->clnt, mem->handle);
		mem->kvaddr = NULL;
	}

	if (mem->handle) {
		trace_msm_smem_buffer_ion_op_start("FREE",
				(u32)mem->buffer_type, -1, mem->size, -1,
				mem->flags, -1);
		ion_free(client->clnt, mem->handle);
		mem->handle = NULL;
		trace_msm_smem_buffer_ion_op_end("FREE", (u32)mem->buffer_type,
			-1, mem->size, -1, mem->flags, -1);
	} else {
		dprintk(VIDC_ERR, "%s: invalid ion_handle\n", __func__);
	}

	return rc;
+1 −0
Original line number Diff line number Diff line
@@ -4758,6 +4758,7 @@ void msm_comm_release_eos_buffers(struct msm_vidc_inst *inst)
	mutex_lock(&inst->eosbufs.lock);
	list_for_each_entry_safe(buf, next, &inst->eosbufs.list, list) {
		list_del(&buf->list);
		msm_comm_smem_free(inst, &buf->smem);
		kfree(buf);
	}
	INIT_LIST_HEAD(&inst->eosbufs.list);