This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: rcar-vin: Free buffers with error if hardware stop fails
Author:  Niklas Söderlund <[email protected]>
Date:    Mon Nov 8 16:02:17 2021 +0000

The driver already has logic to detect if it fails to stop properly and
report this error to the user. The driver however did not report the
unused buffers or buffers given to the hardware (if any) with an error,
the buffers where instead returned to user-space in the active state.

Build on the existing detection of the error condition and correctly
return the buffers with an error if it triggers.

Signed-off-by: Niklas Söderlund <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 drivers/media/platform/rcar-vin/rcar-dma.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

---

diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c 
b/drivers/media/platform/rcar-vin/rcar-dma.c
index 25ead9333d00..79bb9081853f 100644
--- a/drivers/media/platform/rcar-vin/rcar-dma.c
+++ b/drivers/media/platform/rcar-vin/rcar-dma.c
@@ -1371,6 +1371,16 @@ void rvin_stop_streaming(struct rvin_dev *vin)
 
        spin_unlock_irqrestore(&vin->qlock, flags);
 
+       /* If something went wrong, free buffers with an error. */
+       if (!buffersFreed) {
+               return_unused_buffers(vin, VB2_BUF_STATE_ERROR);
+               for (i = 0; i < HW_BUFFER_NUM; i++) {
+                       if (vin->buf_hw[i].buffer)
+                               vb2_buffer_done(&vin->buf_hw[i].buffer->vb2_buf,
+                                               VB2_BUF_STATE_ERROR);
+               }
+       }
+
        rvin_set_stream(vin, 0);
 
        /* disable interrupts */

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to