Re: [PATCH] media: chips-media: wave5: add missing spinlock protection for handle_dynamic_resolution_change()

From: Nicolas Dufresne

Date: Thu Mar 19 2026 - 15:37:29 EST


Le samedi 31 janvier 2026 à 22:19 +0000, Ziyi Guo a écrit :
> initialize_sequence() calls handle_dynamic_resolution_change() without
> holding inst->state_spinlock. However, handle_dynamic_resolution_change()
> has lockdep_assert_held(&inst->state_spinlock) indicating that callers
> must hold this lock.
>
> Other callers of handle_dynamic_resolution_change() properly acquire the
> spinlock:
> - wave5_vpu_dec_finish_decode()
> - wave5_vpu_dec_device_run()
>
> Add spin_lock_irqsave()/spin_unlock_irqrestore() around the
> handle_dynamic_resolution_change() call in initialize_sequence() to fix
> the missing lock protection.

Same paragraph danse, I'll take care.

>
> Signed-off-by: Ziyi Guo <n7l8m4@xxxxxxxxxxxxxxxxxx>

Reviewed-by: Nicolas Dufresne <nicolas.dufresne@xxxxxxxxxxxxx>

>
> ---
>  drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
> b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
> index e3038c18ca36..73f21f60e7f5 100644
> --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
> +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
> @@ -1533,6 +1533,7 @@ static int initialize_sequence(struct vpu_instance
> *inst)
>  {
>   struct dec_initial_info initial_info;
>   int ret = 0;
> + unsigned long flags;
>  
>   memset(&initial_info, 0, sizeof(struct dec_initial_info));
>  
> @@ -1554,7 +1555,9 @@ static int initialize_sequence(struct vpu_instance
> *inst)
>   return ret;
>   }
>  
> + spin_lock_irqsave(&inst->state_spinlock, flags);
>   handle_dynamic_resolution_change(inst);
> + spin_unlock_irqrestore(&inst->state_spinlock, flags);
>  
>   return 0;
>  }

Attachment: signature.asc
Description: This is a digitally signed message part