Loading drivers/media/platform/msm/camera/cam_req_mgr/cam_mem_mgr.c +20 −15 Original line number Diff line number Diff line Loading @@ -201,37 +201,42 @@ int cam_mem_get_cpu_buf(int32_t buf_handle, uintptr_t *vaddr_ptr, size_t *len) if (!tbl.bufq[idx].active) return -EPERM; mutex_lock(&tbl.bufq[idx].q_lock); if (buf_handle != tbl.bufq[idx].buf_handle) { rc = -EINVAL; goto exit_func; } if (!(tbl.bufq[idx].flags & CAM_MEM_FLAG_KMD_ACCESS)) { rc = -EINVAL; goto exit_func; } if (!tbl.bufq[idx].kmdvaddr) { mutex_lock(&tbl.bufq[idx].q_lock); ion_hdl = tbl.bufq[idx].i_hdl; if (!ion_hdl) { CAM_ERR(CAM_MEM, "Invalid ION handle"); rc = -EINVAL; goto exit_func; goto release_mutex; } if (tbl.bufq[idx].flags & CAM_MEM_FLAG_KMD_ACCESS) { if (!tbl.bufq[idx].kmdvaddr) { rc = cam_mem_util_map_cpu_va(ion_hdl, &kvaddr, &klen); if (rc) goto exit_func; goto release_mutex; tbl.bufq[idx].kmdvaddr = kvaddr; } } else { rc = -EINVAL; goto exit_func; mutex_unlock(&tbl.bufq[idx].q_lock); } *vaddr_ptr = tbl.bufq[idx].kmdvaddr; *len = tbl.bufq[idx].len; exit_func: return rc; release_mutex: mutex_unlock(&tbl.bufq[idx].q_lock); exit_func: return rc; } EXPORT_SYMBOL(cam_mem_get_cpu_buf); Loading Loading
drivers/media/platform/msm/camera/cam_req_mgr/cam_mem_mgr.c +20 −15 Original line number Diff line number Diff line Loading @@ -201,37 +201,42 @@ int cam_mem_get_cpu_buf(int32_t buf_handle, uintptr_t *vaddr_ptr, size_t *len) if (!tbl.bufq[idx].active) return -EPERM; mutex_lock(&tbl.bufq[idx].q_lock); if (buf_handle != tbl.bufq[idx].buf_handle) { rc = -EINVAL; goto exit_func; } if (!(tbl.bufq[idx].flags & CAM_MEM_FLAG_KMD_ACCESS)) { rc = -EINVAL; goto exit_func; } if (!tbl.bufq[idx].kmdvaddr) { mutex_lock(&tbl.bufq[idx].q_lock); ion_hdl = tbl.bufq[idx].i_hdl; if (!ion_hdl) { CAM_ERR(CAM_MEM, "Invalid ION handle"); rc = -EINVAL; goto exit_func; goto release_mutex; } if (tbl.bufq[idx].flags & CAM_MEM_FLAG_KMD_ACCESS) { if (!tbl.bufq[idx].kmdvaddr) { rc = cam_mem_util_map_cpu_va(ion_hdl, &kvaddr, &klen); if (rc) goto exit_func; goto release_mutex; tbl.bufq[idx].kmdvaddr = kvaddr; } } else { rc = -EINVAL; goto exit_func; mutex_unlock(&tbl.bufq[idx].q_lock); } *vaddr_ptr = tbl.bufq[idx].kmdvaddr; *len = tbl.bufq[idx].len; exit_func: return rc; release_mutex: mutex_unlock(&tbl.bufq[idx].q_lock); exit_func: return rc; } EXPORT_SYMBOL(cam_mem_get_cpu_buf); Loading