RE: [PATCH] [media] v4l2: mem2mem: save irq flags correctly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux