Loading drivers/media/platform/msm/camera_v2/msm.c +4 −1 Original line number Diff line number Diff line Loading @@ -506,6 +506,7 @@ int msm_destroy_session(unsigned int session_id) { struct msm_session *session; struct v4l2_subdev *buf_mgr_subdev; struct msm_sd_close_ioctl session_info; session = msm_queue_find(msm_session_q, struct msm_session, list, __msm_queue_find_session, &session_id); Loading @@ -519,8 +520,10 @@ int msm_destroy_session(unsigned int session_id) list, session); buf_mgr_subdev = msm_buf_mngr_get_subdev(); if (buf_mgr_subdev) { session_info.session = session_id; session_info.stream = 0; v4l2_subdev_call(buf_mgr_subdev, core, ioctl, MSM_SD_SHUTDOWN, NULL); MSM_SD_SHUTDOWN, &session_info); } else { pr_err("%s: Buff manger device node is NULL\n", __func__); } Loading drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.c +14 −7 Original line number Diff line number Diff line Loading @@ -100,22 +100,29 @@ static int32_t msm_buf_mngr_put_buf(struct msm_buf_mngr_device *buf_mngr_dev, return ret; } static void msm_buf_mngr_sd_shutdown(struct msm_buf_mngr_device *buf_mngr_dev) static void msm_buf_mngr_sd_shutdown(struct msm_buf_mngr_device *buf_mngr_dev, struct msm_sd_close_ioctl *session) { unsigned long flags; struct msm_get_bufs *bufs, *save; BUG_ON(!buf_mngr_dev); BUG_ON(!session); spin_lock_irqsave(&buf_mngr_dev->buf_q_spinlock, flags); if (!list_empty(&buf_mngr_dev->buf_qhead)) { list_for_each_entry_safe(bufs, save, &buf_mngr_dev->buf_qhead, entry) { pr_err("%s: Error delete invalid bufs =%lx, ses_id=%d, str_id=%d, idx=%d\n", __func__, (unsigned long)bufs, bufs->session_id, bufs->stream_id, bufs->vb2_buf->v4l2_buf.index); pr_info("%s: Delete invalid bufs =%lx, session_id=%u, bufs->ses_id=%d, str_id=%d, idx=%d\n", __func__, (unsigned long)bufs, session->session, bufs->session_id, bufs->stream_id, bufs->vb2_buf->v4l2_buf.index); if (session->session == bufs->session_id) { list_del_init(&bufs->entry); kfree(bufs); } } } spin_unlock_irqrestore(&buf_mngr_dev->buf_q_spinlock, flags); } Loading Loading @@ -175,7 +182,7 @@ static long msm_buf_mngr_subdev_ioctl(struct v4l2_subdev *sd, rc = msm_generic_buf_mngr_close(sd, NULL); break; case MSM_SD_SHUTDOWN: msm_buf_mngr_sd_shutdown(buf_mngr_dev); msm_buf_mngr_sd_shutdown(buf_mngr_dev, argp); break; default: return -ENOIOCTLCMD; Loading Loading
drivers/media/platform/msm/camera_v2/msm.c +4 −1 Original line number Diff line number Diff line Loading @@ -506,6 +506,7 @@ int msm_destroy_session(unsigned int session_id) { struct msm_session *session; struct v4l2_subdev *buf_mgr_subdev; struct msm_sd_close_ioctl session_info; session = msm_queue_find(msm_session_q, struct msm_session, list, __msm_queue_find_session, &session_id); Loading @@ -519,8 +520,10 @@ int msm_destroy_session(unsigned int session_id) list, session); buf_mgr_subdev = msm_buf_mngr_get_subdev(); if (buf_mgr_subdev) { session_info.session = session_id; session_info.stream = 0; v4l2_subdev_call(buf_mgr_subdev, core, ioctl, MSM_SD_SHUTDOWN, NULL); MSM_SD_SHUTDOWN, &session_info); } else { pr_err("%s: Buff manger device node is NULL\n", __func__); } Loading
drivers/media/platform/msm/camera_v2/msm_buf_mgr/msm_generic_buf_mgr.c +14 −7 Original line number Diff line number Diff line Loading @@ -100,22 +100,29 @@ static int32_t msm_buf_mngr_put_buf(struct msm_buf_mngr_device *buf_mngr_dev, return ret; } static void msm_buf_mngr_sd_shutdown(struct msm_buf_mngr_device *buf_mngr_dev) static void msm_buf_mngr_sd_shutdown(struct msm_buf_mngr_device *buf_mngr_dev, struct msm_sd_close_ioctl *session) { unsigned long flags; struct msm_get_bufs *bufs, *save; BUG_ON(!buf_mngr_dev); BUG_ON(!session); spin_lock_irqsave(&buf_mngr_dev->buf_q_spinlock, flags); if (!list_empty(&buf_mngr_dev->buf_qhead)) { list_for_each_entry_safe(bufs, save, &buf_mngr_dev->buf_qhead, entry) { pr_err("%s: Error delete invalid bufs =%lx, ses_id=%d, str_id=%d, idx=%d\n", __func__, (unsigned long)bufs, bufs->session_id, bufs->stream_id, bufs->vb2_buf->v4l2_buf.index); pr_info("%s: Delete invalid bufs =%lx, session_id=%u, bufs->ses_id=%d, str_id=%d, idx=%d\n", __func__, (unsigned long)bufs, session->session, bufs->session_id, bufs->stream_id, bufs->vb2_buf->v4l2_buf.index); if (session->session == bufs->session_id) { list_del_init(&bufs->entry); kfree(bufs); } } } spin_unlock_irqrestore(&buf_mngr_dev->buf_q_spinlock, flags); } Loading Loading @@ -175,7 +182,7 @@ static long msm_buf_mngr_subdev_ioctl(struct v4l2_subdev *sd, rc = msm_generic_buf_mngr_close(sd, NULL); break; case MSM_SD_SHUTDOWN: msm_buf_mngr_sd_shutdown(buf_mngr_dev); msm_buf_mngr_sd_shutdown(buf_mngr_dev, argp); break; default: return -ENOIOCTLCMD; Loading