diff --git a/drivers/media/platform/rockchip/isp/capture_v30.c b/drivers/media/platform/rockchip/isp/capture_v30.c index a1ab22488e5f..62a8ae82d343 100644 --- a/drivers/media/platform/rockchip/isp/capture_v30.c +++ b/drivers/media/platform/rockchip/isp/capture_v30.c @@ -977,7 +977,10 @@ static int mi_frame_end(struct rkisp_stream *stream, u32 state) (stream->frame_early && state == FRAME_IRQ)) goto end; } else { + spin_lock_irqsave(&stream->vbq_lock, lock_flags); buf = stream->curr_buf; + stream->curr_buf = NULL; + spin_unlock_irqrestore(&stream->vbq_lock, lock_flags); } if (buf) { diff --git a/drivers/media/platform/rockchip/isp/capture_v32.c b/drivers/media/platform/rockchip/isp/capture_v32.c index 0bc5b80f4a25..1d3891ff3744 100644 --- a/drivers/media/platform/rockchip/isp/capture_v32.c +++ b/drivers/media/platform/rockchip/isp/capture_v32.c @@ -1408,7 +1408,10 @@ static int mi_frame_end(struct rkisp_stream *stream, u32 state) (stream->frame_early && state == FRAME_IRQ)) goto end; } else { + spin_lock_irqsave(&stream->vbq_lock, lock_flags); buf = stream->curr_buf; + stream->curr_buf = NULL; + spin_unlock_irqrestore(&stream->vbq_lock, lock_flags); } if (buf) {