mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
media: chips-media: wave5: add missing spinlock protection for handle_dynamic_resolution_change()
Add spin_lock_irqsave()/spin_unlock_irqrestore() around the
handle_dynamic_resolution_change() call in initialize_sequence() to fix
the missing lock protection.
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()
Signed-off-by: Ziyi Guo <n7l8m4@u.northwestern.edu>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Fixes: 9707a6254a ("media: chips-media: wave5: Add the v4l2 layer")
Cc: stable@vger.kernel.org
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
f480504367
commit
cb8bdd3ffc
|
|
@ -1593,6 +1593,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));
|
||||
|
||||
|
|
@ -1614,7 +1615,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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user