Loading drivers/media/platform/msm/ais/msm.c +7 −4 Original line number Diff line number Diff line Loading @@ -292,6 +292,7 @@ void msm_delete_stream(unsigned int session_id, unsigned int stream_id) return; while (1) { unsigned long wl_flags; if (try_count > 5) { pr_err("%s : not able to delete stream %d\n", Loading @@ -299,18 +300,20 @@ void msm_delete_stream(unsigned int session_id, unsigned int stream_id) break; } write_lock(&session->stream_rwlock); write_lock_irqsave(&session->stream_rwlock, wl_flags); try_count++; stream = msm_queue_find(&session->stream_q, struct msm_stream, list, __msm_queue_find_stream, &stream_id); if (!stream) { write_unlock(&session->stream_rwlock); write_unlock_irqrestore(&session->stream_rwlock, wl_flags); return; } if (msm_vb2_get_stream_state(stream) != 1) { write_unlock(&session->stream_rwlock); write_unlock_irqrestore(&session->stream_rwlock, wl_flags); continue; } Loading @@ -320,7 +323,7 @@ void msm_delete_stream(unsigned int session_id, unsigned int stream_id) kfree(stream); stream = NULL; spin_unlock_irqrestore(&(session->stream_q.lock), flags); write_unlock(&session->stream_rwlock); write_unlock_irqrestore(&session->stream_rwlock, wl_flags); break; } Loading drivers/media/platform/msm/ais/msm_vb2/msm_vb2.c +44 −39 Original line number Diff line number Diff line Loading @@ -46,22 +46,23 @@ int msm_vb2_buf_init(struct vb2_buffer *vb) struct msm_stream *stream; struct msm_session *session; struct msm_vb2_buffer *msm_vb2_buf; unsigned long rl_flags; session = msm_get_session_from_vb2q(vb->vb2_queue); if (IS_ERR_OR_NULL(session)) return -EINVAL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream_from_vb2q(vb->vb2_queue); if (!stream) { pr_err("%s: Couldn't find stream\n", __func__); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } msm_vb2_buf = container_of(vb, struct msm_vb2_buffer, vb2_buf); msm_vb2_buf->in_freeq = 0; read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return 0; } Loading @@ -70,7 +71,7 @@ static void msm_vb2_buf_queue(struct vb2_buffer *vb) struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; struct msm_session *session; unsigned long flags; unsigned long flags, rl_flags; msm_vb2 = container_of(vb, struct msm_vb2_buffer, vb2_buf); Loading @@ -83,19 +84,19 @@ static void msm_vb2_buf_queue(struct vb2_buffer *vb) if (IS_ERR_OR_NULL(session)) return; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream_from_vb2q(vb->vb2_queue); if (!stream) { pr_err("%s:%d] NULL stream", __func__, __LINE__); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return; } spin_lock_irqsave(&stream->stream_lock, flags); list_add_tail(&msm_vb2->list, &stream->queued_list); spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); } static void msm_vb2_buf_finish(struct vb2_buffer *vb) Loading @@ -103,7 +104,7 @@ static void msm_vb2_buf_finish(struct vb2_buffer *vb) struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; struct msm_session *session; unsigned long flags; unsigned long flags, rl_flags; struct msm_vb2_buffer *msm_vb2_entry, *temp; msm_vb2 = container_of(vb, struct msm_vb2_buffer, vb2_buf); Loading @@ -117,12 +118,12 @@ static void msm_vb2_buf_finish(struct vb2_buffer *vb) if (IS_ERR_OR_NULL(session)) return; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream_from_vb2q(vb->vb2_queue); if (!stream) { pr_err("%s:%d] NULL stream", __func__, __LINE__); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return; } Loading @@ -135,7 +136,7 @@ static void msm_vb2_buf_finish(struct vb2_buffer *vb) } } spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); } static void msm_vb2_stop_stream(struct vb2_queue *q) Loading @@ -143,19 +144,19 @@ static void msm_vb2_stop_stream(struct vb2_queue *q) struct msm_vb2_buffer *msm_vb2, *temp; struct msm_stream *stream; struct msm_session *session; unsigned long flags; unsigned long flags, rl_flags; struct vb2_buffer *vb2_buf; session = msm_get_session_from_vb2q(q); if (IS_ERR_OR_NULL(session)) return; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream_from_vb2q(q); if (!stream) { pr_err_ratelimited("%s:%d] NULL stream", __func__, __LINE__); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return; } Loading @@ -174,7 +175,7 @@ static void msm_vb2_stop_stream(struct vb2_queue *q) msm_vb2->in_freeq = 0; } spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); } int msm_vb2_get_stream_state(struct msm_stream *stream) Loading Loading @@ -252,17 +253,17 @@ static struct vb2_buffer *msm_vb2_get_buf(int session_id, struct vb2_buffer *vb2_buf = NULL; struct msm_session *session; struct msm_vb2_buffer *msm_vb2 = NULL; unsigned long flags; unsigned long flags, rl_flags; session = msm_get_session(session_id); if (IS_ERR_OR_NULL(session)) return NULL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return NULL; } Loading @@ -288,7 +289,7 @@ static struct vb2_buffer *msm_vb2_get_buf(int session_id, vb2_buf = NULL; end: spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return vb2_buf; } Loading @@ -299,18 +300,18 @@ static struct vb2_buffer *msm_vb2_get_buf_by_idx(int session_id, struct vb2_buffer *vb2_buf = NULL; struct msm_session *session; struct msm_vb2_buffer *msm_vb2 = NULL; unsigned long flags; unsigned long flags, rl_flags; session = msm_get_session(session_id); if (IS_ERR_OR_NULL(session)) return NULL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return NULL; } Loading @@ -334,7 +335,7 @@ static struct vb2_buffer *msm_vb2_get_buf_by_idx(int session_id, vb2_buf = NULL; end: spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return vb2_buf; } Loading @@ -346,17 +347,17 @@ static int msm_vb2_put_buf(struct vb2_buffer *vb, int session_id, struct msm_vb2_buffer *msm_vb2; struct vb2_buffer *vb2_buf = NULL; int rc = 0; unsigned long flags; unsigned long flags, rl_flags; session = msm_get_session(session_id); if (IS_ERR_OR_NULL(session)) return -EINVAL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } Loading @@ -371,6 +372,8 @@ static int msm_vb2_put_buf(struct vb2_buffer *vb, int session_id, pr_err("VB buffer is INVALID vb=%pK, ses_id=%d, str_id=%d\n", vb, session_id, stream_id); spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } msm_vb2 = Loading @@ -386,7 +389,7 @@ static int msm_vb2_put_buf(struct vb2_buffer *vb, int session_id, rc = -EINVAL; } spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return rc; } Loading @@ -394,7 +397,7 @@ static int msm_vb2_buf_done(struct vb2_buffer *vb, int session_id, unsigned int stream_id, uint32_t sequence, struct timeval *ts, uint32_t reserved) { unsigned long flags; unsigned long flags, rl_flags; struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; struct vb2_buffer *vb2_buf = NULL; Loading @@ -405,11 +408,11 @@ static int msm_vb2_buf_done(struct vb2_buffer *vb, int session_id, if (IS_ERR_OR_NULL(session)) return -EINVAL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } Loading @@ -424,6 +427,8 @@ static int msm_vb2_buf_done(struct vb2_buffer *vb, int session_id, pr_err("VB buffer is INVALID ses_id=%d, str_id=%d, vb=%pK\n", session_id, stream_id, vb); spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } msm_vb2 = Loading @@ -444,7 +449,7 @@ static int msm_vb2_buf_done(struct vb2_buffer *vb, int session_id, rc = -EINVAL; } spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return rc; } Loading @@ -455,18 +460,18 @@ long msm_vb2_return_buf_by_idx(int session_id, unsigned int stream_id, struct vb2_buffer *vb2_buf = NULL; struct msm_session *session; struct msm_vb2_buffer *msm_vb2 = NULL; unsigned long flags; unsigned long flags, rl_flags; long rc = -EINVAL; session = msm_get_session(session_id); if (IS_ERR_OR_NULL(session)) return rc; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } Loading Loading @@ -494,14 +499,14 @@ long msm_vb2_return_buf_by_idx(int session_id, unsigned int stream_id, end: spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return rc; } EXPORT_SYMBOL(msm_vb2_return_buf_by_idx); static int msm_vb2_flush_buf(int session_id, unsigned int stream_id) { unsigned long flags; unsigned long flags, rl_flags; struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; struct vb2_buffer *vb2_buf = NULL; Loading @@ -511,11 +516,11 @@ static int msm_vb2_flush_buf(int session_id, unsigned int stream_id) if (IS_ERR_OR_NULL(session)) return -EINVAL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } Loading @@ -527,7 +532,7 @@ static int msm_vb2_flush_buf(int session_id, unsigned int stream_id) msm_vb2->in_freeq = 0; } spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return 0; } Loading Loading
drivers/media/platform/msm/ais/msm.c +7 −4 Original line number Diff line number Diff line Loading @@ -292,6 +292,7 @@ void msm_delete_stream(unsigned int session_id, unsigned int stream_id) return; while (1) { unsigned long wl_flags; if (try_count > 5) { pr_err("%s : not able to delete stream %d\n", Loading @@ -299,18 +300,20 @@ void msm_delete_stream(unsigned int session_id, unsigned int stream_id) break; } write_lock(&session->stream_rwlock); write_lock_irqsave(&session->stream_rwlock, wl_flags); try_count++; stream = msm_queue_find(&session->stream_q, struct msm_stream, list, __msm_queue_find_stream, &stream_id); if (!stream) { write_unlock(&session->stream_rwlock); write_unlock_irqrestore(&session->stream_rwlock, wl_flags); return; } if (msm_vb2_get_stream_state(stream) != 1) { write_unlock(&session->stream_rwlock); write_unlock_irqrestore(&session->stream_rwlock, wl_flags); continue; } Loading @@ -320,7 +323,7 @@ void msm_delete_stream(unsigned int session_id, unsigned int stream_id) kfree(stream); stream = NULL; spin_unlock_irqrestore(&(session->stream_q.lock), flags); write_unlock(&session->stream_rwlock); write_unlock_irqrestore(&session->stream_rwlock, wl_flags); break; } Loading
drivers/media/platform/msm/ais/msm_vb2/msm_vb2.c +44 −39 Original line number Diff line number Diff line Loading @@ -46,22 +46,23 @@ int msm_vb2_buf_init(struct vb2_buffer *vb) struct msm_stream *stream; struct msm_session *session; struct msm_vb2_buffer *msm_vb2_buf; unsigned long rl_flags; session = msm_get_session_from_vb2q(vb->vb2_queue); if (IS_ERR_OR_NULL(session)) return -EINVAL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream_from_vb2q(vb->vb2_queue); if (!stream) { pr_err("%s: Couldn't find stream\n", __func__); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } msm_vb2_buf = container_of(vb, struct msm_vb2_buffer, vb2_buf); msm_vb2_buf->in_freeq = 0; read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return 0; } Loading @@ -70,7 +71,7 @@ static void msm_vb2_buf_queue(struct vb2_buffer *vb) struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; struct msm_session *session; unsigned long flags; unsigned long flags, rl_flags; msm_vb2 = container_of(vb, struct msm_vb2_buffer, vb2_buf); Loading @@ -83,19 +84,19 @@ static void msm_vb2_buf_queue(struct vb2_buffer *vb) if (IS_ERR_OR_NULL(session)) return; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream_from_vb2q(vb->vb2_queue); if (!stream) { pr_err("%s:%d] NULL stream", __func__, __LINE__); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return; } spin_lock_irqsave(&stream->stream_lock, flags); list_add_tail(&msm_vb2->list, &stream->queued_list); spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); } static void msm_vb2_buf_finish(struct vb2_buffer *vb) Loading @@ -103,7 +104,7 @@ static void msm_vb2_buf_finish(struct vb2_buffer *vb) struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; struct msm_session *session; unsigned long flags; unsigned long flags, rl_flags; struct msm_vb2_buffer *msm_vb2_entry, *temp; msm_vb2 = container_of(vb, struct msm_vb2_buffer, vb2_buf); Loading @@ -117,12 +118,12 @@ static void msm_vb2_buf_finish(struct vb2_buffer *vb) if (IS_ERR_OR_NULL(session)) return; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream_from_vb2q(vb->vb2_queue); if (!stream) { pr_err("%s:%d] NULL stream", __func__, __LINE__); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return; } Loading @@ -135,7 +136,7 @@ static void msm_vb2_buf_finish(struct vb2_buffer *vb) } } spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); } static void msm_vb2_stop_stream(struct vb2_queue *q) Loading @@ -143,19 +144,19 @@ static void msm_vb2_stop_stream(struct vb2_queue *q) struct msm_vb2_buffer *msm_vb2, *temp; struct msm_stream *stream; struct msm_session *session; unsigned long flags; unsigned long flags, rl_flags; struct vb2_buffer *vb2_buf; session = msm_get_session_from_vb2q(q); if (IS_ERR_OR_NULL(session)) return; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream_from_vb2q(q); if (!stream) { pr_err_ratelimited("%s:%d] NULL stream", __func__, __LINE__); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return; } Loading @@ -174,7 +175,7 @@ static void msm_vb2_stop_stream(struct vb2_queue *q) msm_vb2->in_freeq = 0; } spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); } int msm_vb2_get_stream_state(struct msm_stream *stream) Loading Loading @@ -252,17 +253,17 @@ static struct vb2_buffer *msm_vb2_get_buf(int session_id, struct vb2_buffer *vb2_buf = NULL; struct msm_session *session; struct msm_vb2_buffer *msm_vb2 = NULL; unsigned long flags; unsigned long flags, rl_flags; session = msm_get_session(session_id); if (IS_ERR_OR_NULL(session)) return NULL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return NULL; } Loading @@ -288,7 +289,7 @@ static struct vb2_buffer *msm_vb2_get_buf(int session_id, vb2_buf = NULL; end: spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return vb2_buf; } Loading @@ -299,18 +300,18 @@ static struct vb2_buffer *msm_vb2_get_buf_by_idx(int session_id, struct vb2_buffer *vb2_buf = NULL; struct msm_session *session; struct msm_vb2_buffer *msm_vb2 = NULL; unsigned long flags; unsigned long flags, rl_flags; session = msm_get_session(session_id); if (IS_ERR_OR_NULL(session)) return NULL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return NULL; } Loading @@ -334,7 +335,7 @@ static struct vb2_buffer *msm_vb2_get_buf_by_idx(int session_id, vb2_buf = NULL; end: spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return vb2_buf; } Loading @@ -346,17 +347,17 @@ static int msm_vb2_put_buf(struct vb2_buffer *vb, int session_id, struct msm_vb2_buffer *msm_vb2; struct vb2_buffer *vb2_buf = NULL; int rc = 0; unsigned long flags; unsigned long flags, rl_flags; session = msm_get_session(session_id); if (IS_ERR_OR_NULL(session)) return -EINVAL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } Loading @@ -371,6 +372,8 @@ static int msm_vb2_put_buf(struct vb2_buffer *vb, int session_id, pr_err("VB buffer is INVALID vb=%pK, ses_id=%d, str_id=%d\n", vb, session_id, stream_id); spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } msm_vb2 = Loading @@ -386,7 +389,7 @@ static int msm_vb2_put_buf(struct vb2_buffer *vb, int session_id, rc = -EINVAL; } spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return rc; } Loading @@ -394,7 +397,7 @@ static int msm_vb2_buf_done(struct vb2_buffer *vb, int session_id, unsigned int stream_id, uint32_t sequence, struct timeval *ts, uint32_t reserved) { unsigned long flags; unsigned long flags, rl_flags; struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; struct vb2_buffer *vb2_buf = NULL; Loading @@ -405,11 +408,11 @@ static int msm_vb2_buf_done(struct vb2_buffer *vb, int session_id, if (IS_ERR_OR_NULL(session)) return -EINVAL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } Loading @@ -424,6 +427,8 @@ static int msm_vb2_buf_done(struct vb2_buffer *vb, int session_id, pr_err("VB buffer is INVALID ses_id=%d, str_id=%d, vb=%pK\n", session_id, stream_id, vb); spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } msm_vb2 = Loading @@ -444,7 +449,7 @@ static int msm_vb2_buf_done(struct vb2_buffer *vb, int session_id, rc = -EINVAL; } spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return rc; } Loading @@ -455,18 +460,18 @@ long msm_vb2_return_buf_by_idx(int session_id, unsigned int stream_id, struct vb2_buffer *vb2_buf = NULL; struct msm_session *session; struct msm_vb2_buffer *msm_vb2 = NULL; unsigned long flags; unsigned long flags, rl_flags; long rc = -EINVAL; session = msm_get_session(session_id); if (IS_ERR_OR_NULL(session)) return rc; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } Loading Loading @@ -494,14 +499,14 @@ long msm_vb2_return_buf_by_idx(int session_id, unsigned int stream_id, end: spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return rc; } EXPORT_SYMBOL(msm_vb2_return_buf_by_idx); static int msm_vb2_flush_buf(int session_id, unsigned int stream_id) { unsigned long flags; unsigned long flags, rl_flags; struct msm_vb2_buffer *msm_vb2; struct msm_stream *stream; struct vb2_buffer *vb2_buf = NULL; Loading @@ -511,11 +516,11 @@ static int msm_vb2_flush_buf(int session_id, unsigned int stream_id) if (IS_ERR_OR_NULL(session)) return -EINVAL; read_lock(&session->stream_rwlock); read_lock_irqsave(&session->stream_rwlock, rl_flags); stream = msm_get_stream(session, stream_id); if (IS_ERR_OR_NULL(stream)) { read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return -EINVAL; } Loading @@ -527,7 +532,7 @@ static int msm_vb2_flush_buf(int session_id, unsigned int stream_id) msm_vb2->in_freeq = 0; } spin_unlock_irqrestore(&stream->stream_lock, flags); read_unlock(&session->stream_rwlock); read_unlock_irqrestore(&session->stream_rwlock, rl_flags); return 0; } Loading