Revert "Revert "mem-buf: Properly track which VMs have access to buffer""

Restore bdd8cc723d.

Change-Id: Ib2c97698758098a6596fbb64ef36176d4f9a7f20
Signed-off-by: Chris Goldsworthy <quic_cgoldswo@quicinc.com>
This commit is contained in:
Chris Goldsworthy 2023-06-30 13:46:48 -07:00
parent 0e754c35a4
commit a4b2af918f
3 changed files with 9 additions and 9 deletions

View File

@ -1119,7 +1119,9 @@ struct dma_buf *mem_buf_retrieve(struct mem_buf_retrieve_kernel_arg *arg)
buffer->uncached = false;
buffer->free = mem_buf_retrieve_release;
buffer->vmperm = mem_buf_vmperm_alloc_accept(&buffer->sg_table,
arg->memparcel_hdl);
arg->memparcel_hdl,
arg->vmids, arg->perms,
arg->nr_acl_entries);
exp_info.size = buffer->len;
exp_info.flags = arg->fd_flags;

View File

@ -140,17 +140,14 @@ static struct mem_buf_vmperm *mem_buf_vmperm_alloc_flags(
/* Must be freed via mem_buf_vmperm_release. */
struct mem_buf_vmperm *mem_buf_vmperm_alloc_accept(struct sg_table *sgt,
gh_memparcel_handle_t memparcel_hdl)
gh_memparcel_handle_t memparcel_hdl, int *vmids, int *perms,
unsigned int nr_acl_entries)
{
int vmids[1];
int perms[1];
struct mem_buf_vmperm *vmperm;
vmids[0] = current_vmid;
perms[0] = PERM_READ | PERM_WRITE | PERM_EXEC;
vmperm = mem_buf_vmperm_alloc_flags(sgt,
MEM_BUF_WRAPPER_FLAG_ACCEPT,
vmids, perms, 1);
vmids, perms, nr_acl_entries);
if (IS_ERR(vmperm))
return vmperm;

View File

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef _MEM_BUF_EXPORTER_H
@ -59,8 +60,8 @@ struct mem_buf_vmperm *mem_buf_vmperm_alloc_staticvm(struct sg_table *sgt, int *
* A dmabuf in the "MEMACCEPT" state.
*/
struct mem_buf_vmperm *mem_buf_vmperm_alloc_accept(struct sg_table *sgt,
gh_memparcel_handle_t memparcel_hdl);
gh_memparcel_handle_t memparcel_hdl, int *vmids, int *perms,
unsigned int nr_acl_entries);
/*
* Performs the expected close step based on whether the dmabuf