Loading drivers/media/platform/msm/vidc/msm_vidc.c +12 −9 Original line number Diff line number Diff line Loading @@ -227,8 +227,10 @@ struct buffer_info *get_registered_buf(struct msm_vidc_inst *inst, goto err_invalid_input; } WARN(!mutex_is_locked(&inst->registeredbufs.lock), "Registered buf lock is not acquired for %s", __func__); *plane = 0; mutex_lock(&inst->registeredbufs.lock); list_for_each_entry(temp, &inst->registeredbufs.list, list) { for (i = 0; i < min(temp->num_planes, VIDEO_MAX_PLANES); i++) { bool fd_matches = fd == temp->fd[i]; Loading @@ -252,7 +254,7 @@ struct buffer_info *get_registered_buf(struct msm_vidc_inst *inst, if (ret) break; } mutex_unlock(&inst->registeredbufs.lock); err_invalid_input: return ret; } Loading Loading @@ -459,7 +461,7 @@ int map_and_register_buf(struct msm_vidc_inst *inst, struct v4l2_buffer *b) !b->m.planes[i].length) { continue; } mutex_lock(&inst->sync_lock); mutex_lock(&inst->registeredbufs.lock); temp = get_registered_buf(inst, b, i, &plane); if (temp && !is_dynamic_output_buffer_mode(b, inst)) { dprintk(VIDC_DBG, Loading @@ -478,7 +480,6 @@ int map_and_register_buf(struct msm_vidc_inst *inst, struct v4l2_buffer *b) */ dprintk(VIDC_DBG, "[MAP] Buffer already prepared\n"); temp->inactive = false; mutex_lock(&inst->registeredbufs.lock); list_for_each_entry(iterator, &inst->registeredbufs.list, list) { if (iterator == temp) { Loading @@ -490,9 +491,8 @@ int map_and_register_buf(struct msm_vidc_inst *inst, struct v4l2_buffer *b) break; } } mutex_unlock(&inst->registeredbufs.lock); } mutex_unlock(&inst->sync_lock); mutex_unlock(&inst->registeredbufs.lock); if (rc < 0) goto exit; Loading Loading @@ -556,7 +556,8 @@ int unmap_and_deregister_buf(struct msm_vidc_inst *inst, return -EINVAL; } mutex_lock(&inst->registeredbufs.lock); WARN(!mutex_is_locked(&inst->registeredbufs.lock), "Registered buf lock is not acquired for %s", __func__); /* * Make sure the buffer to be unmapped and deleted Loading Loading @@ -617,7 +618,6 @@ int unmap_and_deregister_buf(struct msm_vidc_inst *inst, dprintk(VIDC_DBG, "[UNMAP] NOT-FREED binfo: %p\n", temp); } exit: mutex_unlock(&inst->registeredbufs.lock); return 0; } Loading Loading @@ -841,8 +841,9 @@ int msm_vidc_qbuf(void *instance, struct v4l2_buffer *b) b->m.planes[i].m.userptr = 0; continue; } mutex_lock(&inst->registeredbufs.lock); binfo = get_registered_buf(inst, b, i, &plane); mutex_unlock(&inst->registeredbufs.lock); if (!binfo) { dprintk(VIDC_ERR, "This buffer is not registered: %d, %d, %d\n", Loading Loading @@ -953,7 +954,9 @@ int msm_vidc_dqbuf(void *instance, struct v4l2_buffer *b) dprintk(VIDC_DBG, "[DEQUEUED]: fd[0] = %d\n", buffer_info->fd[0]); mutex_lock(&inst->registeredbufs.lock); rc = unmap_and_deregister_buf(inst, buffer_info); mutex_unlock(&inst->registeredbufs.lock); } else rc = output_buffer_cache_invalidate(inst, buffer_info); Loading drivers/media/platform/msm/vidc/msm_vidc_common.c +1 −4 Original line number Diff line number Diff line Loading @@ -828,8 +828,6 @@ static void handle_event_change(enum hal_command_response cmd, void *data) "RELEASE REFERENCE EVENT FROM F/W - fd = %d offset = %d\n", ptr[0], ptr[1]); mutex_lock(&inst->sync_lock); /* Decrement buffer reference count*/ mutex_lock(&inst->registeredbufs.lock); list_for_each_entry(temp, &inst->registeredbufs.list, Loading @@ -839,7 +837,6 @@ static void handle_event_change(enum hal_command_response cmd, void *data) break; } } mutex_unlock(&inst->registeredbufs.lock); /* * Release buffer and remove from list Loading @@ -848,7 +845,7 @@ static void handle_event_change(enum hal_command_response cmd, void *data) if (unmap_and_deregister_buf(inst, binfo)) dprintk(VIDC_ERR, "%s: buffer unmap failed\n", __func__); mutex_unlock(&inst->sync_lock); mutex_unlock(&inst->registeredbufs.lock); /*send event to client*/ v4l2_event_queue_fh(&inst->event_handler, &buf_event); Loading Loading
drivers/media/platform/msm/vidc/msm_vidc.c +12 −9 Original line number Diff line number Diff line Loading @@ -227,8 +227,10 @@ struct buffer_info *get_registered_buf(struct msm_vidc_inst *inst, goto err_invalid_input; } WARN(!mutex_is_locked(&inst->registeredbufs.lock), "Registered buf lock is not acquired for %s", __func__); *plane = 0; mutex_lock(&inst->registeredbufs.lock); list_for_each_entry(temp, &inst->registeredbufs.list, list) { for (i = 0; i < min(temp->num_planes, VIDEO_MAX_PLANES); i++) { bool fd_matches = fd == temp->fd[i]; Loading @@ -252,7 +254,7 @@ struct buffer_info *get_registered_buf(struct msm_vidc_inst *inst, if (ret) break; } mutex_unlock(&inst->registeredbufs.lock); err_invalid_input: return ret; } Loading Loading @@ -459,7 +461,7 @@ int map_and_register_buf(struct msm_vidc_inst *inst, struct v4l2_buffer *b) !b->m.planes[i].length) { continue; } mutex_lock(&inst->sync_lock); mutex_lock(&inst->registeredbufs.lock); temp = get_registered_buf(inst, b, i, &plane); if (temp && !is_dynamic_output_buffer_mode(b, inst)) { dprintk(VIDC_DBG, Loading @@ -478,7 +480,6 @@ int map_and_register_buf(struct msm_vidc_inst *inst, struct v4l2_buffer *b) */ dprintk(VIDC_DBG, "[MAP] Buffer already prepared\n"); temp->inactive = false; mutex_lock(&inst->registeredbufs.lock); list_for_each_entry(iterator, &inst->registeredbufs.list, list) { if (iterator == temp) { Loading @@ -490,9 +491,8 @@ int map_and_register_buf(struct msm_vidc_inst *inst, struct v4l2_buffer *b) break; } } mutex_unlock(&inst->registeredbufs.lock); } mutex_unlock(&inst->sync_lock); mutex_unlock(&inst->registeredbufs.lock); if (rc < 0) goto exit; Loading Loading @@ -556,7 +556,8 @@ int unmap_and_deregister_buf(struct msm_vidc_inst *inst, return -EINVAL; } mutex_lock(&inst->registeredbufs.lock); WARN(!mutex_is_locked(&inst->registeredbufs.lock), "Registered buf lock is not acquired for %s", __func__); /* * Make sure the buffer to be unmapped and deleted Loading Loading @@ -617,7 +618,6 @@ int unmap_and_deregister_buf(struct msm_vidc_inst *inst, dprintk(VIDC_DBG, "[UNMAP] NOT-FREED binfo: %p\n", temp); } exit: mutex_unlock(&inst->registeredbufs.lock); return 0; } Loading Loading @@ -841,8 +841,9 @@ int msm_vidc_qbuf(void *instance, struct v4l2_buffer *b) b->m.planes[i].m.userptr = 0; continue; } mutex_lock(&inst->registeredbufs.lock); binfo = get_registered_buf(inst, b, i, &plane); mutex_unlock(&inst->registeredbufs.lock); if (!binfo) { dprintk(VIDC_ERR, "This buffer is not registered: %d, %d, %d\n", Loading Loading @@ -953,7 +954,9 @@ int msm_vidc_dqbuf(void *instance, struct v4l2_buffer *b) dprintk(VIDC_DBG, "[DEQUEUED]: fd[0] = %d\n", buffer_info->fd[0]); mutex_lock(&inst->registeredbufs.lock); rc = unmap_and_deregister_buf(inst, buffer_info); mutex_unlock(&inst->registeredbufs.lock); } else rc = output_buffer_cache_invalidate(inst, buffer_info); Loading
drivers/media/platform/msm/vidc/msm_vidc_common.c +1 −4 Original line number Diff line number Diff line Loading @@ -828,8 +828,6 @@ static void handle_event_change(enum hal_command_response cmd, void *data) "RELEASE REFERENCE EVENT FROM F/W - fd = %d offset = %d\n", ptr[0], ptr[1]); mutex_lock(&inst->sync_lock); /* Decrement buffer reference count*/ mutex_lock(&inst->registeredbufs.lock); list_for_each_entry(temp, &inst->registeredbufs.list, Loading @@ -839,7 +837,6 @@ static void handle_event_change(enum hal_command_response cmd, void *data) break; } } mutex_unlock(&inst->registeredbufs.lock); /* * Release buffer and remove from list Loading @@ -848,7 +845,7 @@ static void handle_event_change(enum hal_command_response cmd, void *data) if (unmap_and_deregister_buf(inst, binfo)) dprintk(VIDC_ERR, "%s: buffer unmap failed\n", __func__); mutex_unlock(&inst->sync_lock); mutex_unlock(&inst->registeredbufs.lock); /*send event to client*/ v4l2_event_queue_fh(&inst->event_handler, &buf_event); Loading