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 &&
|