From a8b06778bbd231180098357e1739dbc405adfc2c Mon Sep 17 00:00:00 2001 From: Sagar Kamble Date: Thu, 16 Jul 2020 01:11:56 +0530 Subject: [PATCH] gpu: nvgpu: validate map request with nvmap dmabuf file mode fail RW map request with RO nvmap dmabuf. Bug 200630384 Change-Id: Ic18d348d30a638cd6cb098e9228f470809dbea42 Signed-off-by: Sagar Kamble Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2376131 Reviewed-by: automaticguardword Reviewed-by: Lakshmanan M Reviewed-by: Vijayakumar Subbu Reviewed-by: mobile promotions Tested-by: mobile promotions GVS: Gerrit_Virtual_Submit --- drivers/gpu/nvgpu/os/linux/vm.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpu/nvgpu/os/linux/vm.c b/drivers/gpu/nvgpu/os/linux/vm.c index 238f33d2d..e6d3b2c6d 100644 --- a/drivers/gpu/nvgpu/os/linux/vm.c +++ b/drivers/gpu/nvgpu/os/linux/vm.c @@ -205,6 +205,15 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm, struct dma_buf_attachment *attachment; int err = 0; + nvgpu_log(g, gpu_dbg_map, "dmabuf file mode: 0x%x mapping flags: 0x%x", + dmabuf->file->f_mode, flags); + + if (!(dmabuf->file->f_mode & (FMODE_WRITE | FMODE_PWRITE)) && + !(flags & NVGPU_VM_MAP_ACCESS_NO_WRITE)) { + nvgpu_err(g, "RW access requested for RO mapped buffer"); + return -EINVAL; + } + sgt = nvgpu_mm_pin(dev, dmabuf, &attachment); if (IS_ERR(sgt)) { nvgpu_warn(g, "Failed to pin dma_buf!");