Hi Niklas, On Thu, Nov 12, 2020 at 11:51:44PM +0100, Niklas Söderlund wrote: > Do not attempt to stop the streaming if the stream is not running. > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> > --- > drivers/media/platform/rcar-vin/rcar-dma.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c b/drivers/media/platform/rcar-vin/rcar-dma.c > index 5a5f0e5007478c8d..eae25972ed7df2b6 100644 > --- a/drivers/media/platform/rcar-vin/rcar-dma.c > +++ b/drivers/media/platform/rcar-vin/rcar-dma.c > @@ -1302,6 +1302,11 @@ void rvin_stop_streaming(struct rvin_dev *vin) > > spin_lock_irqsave(&vin->qlock, flags); > > + if (vin->state == STOPPED) { > + spin_unlock_irqrestore(&vin->qlock, flags); > + return; Do I read it right that, in case a double stop is attempted, returning here is not enough as the caller: { rvin_stop_streaming(vin); /* Free scratch buffer. */ dma_free_coherent(vin->dev, vin->format.sizeimage, vin->scratch, vin->scratch_phys); return_unused_buffers(vin, VB2_BUF_STATE_ERROR); } Are the potential double call to dma_free_coherent and the buffer return procedure harmless ? Thanks j > + } > + > vin->state = STOPPING; > > /* Wait until only scratch buffer is used, max 3 interrupts. */ > -- > 2.29.2 >