Hi Sheu, Thank you for this patch. May I also ask you to add me to Cc of next mem2mem patches, as I am the mem2mem submaintainer? Best wishes, -- Kamil Debski Linux Kernel Developer Samsung R&D Institute Poland > -----Original Message----- > From: linux-media-owner@xxxxxxxxxxxxxxx [mailto:linux-media- > owner@xxxxxxxxxxxxxxx] On Behalf Of John Sheu > Sent: Friday, May 24, 2013 2:42 AM > To: linux-media@xxxxxxxxxxxxxxx > Cc: mchehab@xxxxxxxxxx; pawel@xxxxxxxxxx; John Sheu > Subject: [PATCH] [media] v4l2: mem2mem: save irq flags correctly > > Save flags correctly when taking spinlocks in v4l2_m2m_try_schedule. > > Signed-off-by: John Sheu <sheu@xxxxxxxxxx> Acked-by: Kamil Debski <k.debski@xxxxxxxxxxx> > --- > drivers/media/v4l2-core/v4l2-mem2mem.c | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c > b/drivers/media/v4l2-core/v4l2-mem2mem.c > index 66f599f..3606ff2 100644 > --- a/drivers/media/v4l2-core/v4l2-mem2mem.c > +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c > @@ -205,7 +205,7 @@ static void v4l2_m2m_try_run(struct v4l2_m2m_dev > *m2m_dev) static void v4l2_m2m_try_schedule(struct v4l2_m2m_ctx > *m2m_ctx) { > struct v4l2_m2m_dev *m2m_dev; > - unsigned long flags_job, flags; > + unsigned long flags_job, flags_out, flags_cap; > > m2m_dev = m2m_ctx->m2m_dev; > dprintk("Trying to schedule a job for m2m_ctx: %p\n", m2m_ctx); > @@ -223,23 +223,26 @@ static void v4l2_m2m_try_schedule(struct > v4l2_m2m_ctx *m2m_ctx) > return; > } > > - spin_lock_irqsave(&m2m_ctx->out_q_ctx.rdy_spinlock, flags); > + spin_lock_irqsave(&m2m_ctx->out_q_ctx.rdy_spinlock, flags_out); > if (list_empty(&m2m_ctx->out_q_ctx.rdy_queue)) { > - spin_unlock_irqrestore(&m2m_ctx->out_q_ctx.rdy_spinlock, > flags); > + spin_unlock_irqrestore(&m2m_ctx->out_q_ctx.rdy_spinlock, > + flags_out); > spin_unlock_irqrestore(&m2m_dev->job_spinlock, flags_job); > dprintk("No input buffers available\n"); > return; > } > - spin_lock_irqsave(&m2m_ctx->cap_q_ctx.rdy_spinlock, flags); > + spin_lock_irqsave(&m2m_ctx->cap_q_ctx.rdy_spinlock, flags_cap); > if (list_empty(&m2m_ctx->cap_q_ctx.rdy_queue)) { > - spin_unlock_irqrestore(&m2m_ctx->cap_q_ctx.rdy_spinlock, > flags); > - spin_unlock_irqrestore(&m2m_ctx->out_q_ctx.rdy_spinlock, > flags); > + spin_unlock_irqrestore(&m2m_ctx->cap_q_ctx.rdy_spinlock, > + flags_cap); > + spin_unlock_irqrestore(&m2m_ctx->out_q_ctx.rdy_spinlock, > + flags_out); > spin_unlock_irqrestore(&m2m_dev->job_spinlock, flags_job); > dprintk("No output buffers available\n"); > return; > } > - spin_unlock_irqrestore(&m2m_ctx->cap_q_ctx.rdy_spinlock, flags); > - spin_unlock_irqrestore(&m2m_ctx->out_q_ctx.rdy_spinlock, flags); > + spin_unlock_irqrestore(&m2m_ctx->cap_q_ctx.rdy_spinlock, > flags_cap); > + spin_unlock_irqrestore(&m2m_ctx->out_q_ctx.rdy_spinlock, > flags_out); > > if (m2m_dev->m2m_ops->job_ready > && (!m2m_dev->m2m_ops->job_ready(m2m_ctx->priv))) { > -- > 1.8.2.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-media" > in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo > info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html