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