aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-4.19/950-0554-staging-vcsm-cma-Fixup-the-alloc-code-handling-of-ke.patch
blob: 5e5c6bc2de448c59bb8c1981af0263c97ef16032 (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
From 52f881e3afa89bb1ca9e8b037f7600bcc97626e8 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
Date: Wed, 22 May 2019 15:40:37 +0100
Subject: [PATCH] staging: vcsm-cma: Fixup the alloc code handling of
 kernel_id

The allocation code had been copied in from an old branch prior
to having added the IDR for 64bit support. It was therefore pushing
a pointer into the kernel_id field instead of an IDR handle, the
lookup therefore failed, and we never released the buffer.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
---
 drivers/staging/vc04_services/vc-sm-cma/vc_sm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
@@ -1206,7 +1206,7 @@ int vc_sm_cma_ioctl_alloc(struct vc_sm_p
 
 	import.addr = (uint32_t)sg_dma_address(buffer->sg_table->sgl);
 	import.size = aligned_size;
-	import.kernel_id = (uint32_t)buffer;
+	import.kernel_id = get_kernel_id(buffer);
 
 	/* Wrap it into a videocore buffer. */
 	status = vc_sm_cma_vchi_import(sm_state->sm_handle, &import, &result,
@@ -1231,6 +1231,7 @@ int vc_sm_cma_ioctl_alloc(struct vc_sm_p
 	buffer->size = import.size;
 	buffer->dma_addr = import.addr;
 	buffer->vpu_state = VPU_MAPPED;
+	buffer->kernel_id = import.kernel_id;
 	//buffer->res_cached = ioparam->cached;
 
 	fd = dma_buf_fd(dmabuf, O_CLOEXEC);