media: staging: rkisp1: cap: protect buf.curr and buf.next with buf.lock
The spinlock buf.lock should protect access to the buffers. This includes the buffers in buf.queue and also buf.curr and buf.next. The function 'rkisp1_set_next_buf' access buf.next therefore it should also be protected with the lock. Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com> Acked-by: Helen Koike <helen.koike@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
aa86e0bbf2
commit
454748e3b3
|
@ -617,10 +617,11 @@ static void rkisp1_set_next_buf(struct rkisp1_capture *cap)
|
|||
static void rkisp1_handle_buffer(struct rkisp1_capture *cap)
|
||||
{
|
||||
struct rkisp1_isp *isp = &cap->rkisp1->isp;
|
||||
struct rkisp1_buffer *curr_buf = cap->buf.curr;
|
||||
struct rkisp1_buffer *curr_buf;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&cap->buf.lock, flags);
|
||||
curr_buf = cap->buf.curr;
|
||||
|
||||
if (curr_buf) {
|
||||
curr_buf->vb.sequence = atomic_read(&isp->frame_sequence);
|
||||
|
@ -640,9 +641,9 @@ static void rkisp1_handle_buffer(struct rkisp1_capture *cap)
|
|||
queue);
|
||||
list_del(&cap->buf.next->queue);
|
||||
}
|
||||
spin_unlock_irqrestore(&cap->buf.lock, flags);
|
||||
|
||||
rkisp1_set_next_buf(cap);
|
||||
spin_unlock_irqrestore(&cap->buf.lock, flags);
|
||||
}
|
||||
|
||||
void rkisp1_capture_isr(struct rkisp1_device *rkisp1)
|
||||
|
|
Loading…
Reference in New Issue