aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.4/950-0938-staging-vc04_services-codec-Fix-incorrect-buffer-cle.patch
blob: 14736dc2dc822e25de0f90d3e574bda55be9206e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From 84fa15b87a5f938c064ee2d9fca43248865ffbec Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Thu, 13 Aug 2020 16:58:18 +0100
Subject: [PATCH] staging: vc04_services: codec: Fix incorrect buffer
 cleanup

The allocated input and output buffers are initialised in
buf_init and should only be cleared up in buf_cleanup.
stop_streaming was (incorrectly) cleaning up the buffers to
avoid an issue in videobuf2 that had been fixed by the orphaned
buffer support.

Remove the erroneous cleanup.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
 .../bcm2835-codec/bcm2835-v4l2-codec.c          | 17 +----------------
 1 file changed, 1 insertion(+), 16 deletions(-)

--- a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
+++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
@@ -2320,10 +2320,7 @@ static void bcm2835_codec_stop_streaming
 	struct bcm2835_codec_q_data *q_data = get_q_data(ctx, q->type);
 	struct vchiq_mmal_port *port = get_port_data(ctx, q->type);
 	struct vb2_v4l2_buffer *vbuf;
-	struct vb2_v4l2_buffer *vb2;
-	struct v4l2_m2m_buffer *m2m;
-	struct m2m_mmal_buffer *buf;
-	int ret, i;
+	int ret;
 
 	v4l2_dbg(1, debug, &ctx->dev->v4l2_dev, "%s: type: %d - return buffers\n",
 		 __func__, q->type);
@@ -2363,18 +2360,6 @@ static void bcm2835_codec_stop_streaming
 		}
 	}
 
-	/*
-	 * Release the VCSM handle here as otherwise REQBUFS(0) aborts because
-	 * someone is using the dmabuf before giving the driver a chance to do
-	 * anything about it.
-	 */
-	for (i = 0; i < q->num_buffers; i++) {
-		vb2 = to_vb2_v4l2_buffer(q->bufs[i]);
-		m2m = container_of(vb2, struct v4l2_m2m_buffer, vb);
-		buf = container_of(m2m, struct m2m_mmal_buffer, m2m);
-
-		bcm2835_codec_mmal_buf_cleanup(&buf->mmal);
-	}
 
 	/* If both ports disabled, then disable the component */
 	if (!ctx->component->input[0].enabled &&