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 <skamble@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2376131
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Lakshmanan M <lm@nvidia.com>
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
This commit is contained in:
Sagar Kamble
2020-07-16 01:11:56 +05:30
committed by Alex Waterman
parent 7c1c533a4a
commit a8b06778bb

View File

@@ -205,6 +205,15 @@ int nvgpu_vm_map_linux(struct vm_gk20a *vm,
struct dma_buf_attachment *attachment; struct dma_buf_attachment *attachment;
int err = 0; 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); sgt = nvgpu_mm_pin(dev, dmabuf, &attachment);
if (IS_ERR(sgt)) { if (IS_ERR(sgt)) {
nvgpu_warn(g, "Failed to pin dma_buf!"); nvgpu_warn(g, "Failed to pin dma_buf!");