You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openwrt/target/linux/bcm27xx/patches-4.19/950-0554-staging-vcsm-cma-F...

36 lines
1.4 KiB
Diff

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);