mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 04:12:04 -04:00
msm: camera: smmu: Unmap secure buffers in secure camera use case
Dettach and unmap DMA buffers obtained previously from DMA attach and mappings respectively. CRs-Fixed: 3014632 Change-Id: If8f8ebe9fc270f2ba39a9a42ab7c7bfb0f79c4eb Signed-off-by: Shadul Shaikh <sshadu@codeaurora.org>
This commit is contained in:
parent
d2c38601c2
commit
6fb7609c0b
1 changed files with 22 additions and 2 deletions
|
|
@ -212,6 +212,8 @@ struct cam_dma_buff_info {
|
|||
|
||||
struct cam_sec_buff_info {
|
||||
struct dma_buf *buf;
|
||||
struct dma_buf_attachment *attach;
|
||||
struct sg_table *table;
|
||||
enum dma_data_direction dir;
|
||||
int ref_count;
|
||||
dma_addr_t paddr;
|
||||
|
|
@ -2876,6 +2878,8 @@ static int cam_smmu_map_stage2_buffer_and_add_to_list(int idx, int ion_fd,
|
|||
mapping_info->dir = dma_dir;
|
||||
mapping_info->ref_count = 1;
|
||||
mapping_info->buf = dmabuf;
|
||||
mapping_info->attach = attach;
|
||||
mapping_info->table = table;
|
||||
|
||||
CAM_DBG(CAM_SMMU, "idx=%d, ion_fd=%d, dev=%pK, paddr=%pK, len=%u",
|
||||
idx, ion_fd,
|
||||
|
|
@ -2976,11 +2980,27 @@ static int cam_smmu_secure_unmap_buf_and_remove_from_list(
|
|||
struct cam_sec_buff_info *mapping_info,
|
||||
int idx)
|
||||
{
|
||||
if (!mapping_info) {
|
||||
CAM_ERR(CAM_SMMU, "Error: List doesn't exist");
|
||||
if ((!mapping_info->buf) || (!mapping_info->table) ||
|
||||
(!mapping_info->attach)) {
|
||||
CAM_ERR(CAM_SMMU, "Error: Invalid params dev = %pK, table = %pK",
|
||||
(void *)iommu_cb_set.cb_info[idx].dev,
|
||||
(void *)mapping_info->table);
|
||||
CAM_ERR(CAM_SMMU, "Error:dma_buf = %pK, attach = %pK\n",
|
||||
(void *)mapping_info->buf,
|
||||
(void *)mapping_info->attach);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* skip cache operations */
|
||||
mapping_info->attach->dma_map_attrs |= DMA_ATTR_SKIP_CPU_SYNC;
|
||||
|
||||
/* iommu buffer clean up */
|
||||
dma_buf_unmap_attachment(mapping_info->attach,
|
||||
mapping_info->table, mapping_info->dir);
|
||||
dma_buf_detach(mapping_info->buf, mapping_info->attach);
|
||||
dma_buf_put(mapping_info->buf);
|
||||
mapping_info->buf = NULL;
|
||||
|
||||
list_del_init(&mapping_info->list);
|
||||
|
||||
CAM_DBG(CAM_SMMU, "unmap fd: %d, idx : %d", mapping_info->ion_fd, idx);
|
||||
|
|
|
|||
Loading…
Reference in a new issue