Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5db64bef authored by Abhishek Barman's avatar Abhishek Barman Committed by Gerrit - the friendly Code Review server
Browse files

msm: kgsl: Remove 'fd' dependency to get dma_buf handle



Get the dma_buf handle directly from 'vm_file' after
doing necessary checks on the file.

Change-Id: Id5eec16588d64e4e28483b32bb52d4d3d9b86b99
Signed-off-by: default avatarravnar <quic_ravnar@quicinc.com>
Signed-off-by: default avatarSanjay Yadav <quic_sanjyada@quicinc.com>
Signed-off-by: default avatarAbhishek Barman <quic_abarman@quicinc.com>
parent 25c8c0d3
Loading
Loading
Loading
Loading
+7 −15
Original line number Diff line number Diff line
@@ -2243,15 +2243,6 @@ static int kgsl_setup_anon_useraddr(struct kgsl_pagetable *pagetable,
}

#ifdef CONFIG_DMA_SHARED_BUFFER
static int match_file(const void *p, struct file *file, unsigned int fd)
{
	/*
	 * We must return fd + 1 because iterate_fd stops searching on
	 * non-zero return, but 0 is a valid fd.
	 */
	return (p == file) ? (fd + 1) : 0;
}

static void _setup_cache_mode(struct kgsl_mem_entry *entry,
		struct vm_area_struct *vma)
{
@@ -2289,8 +2280,6 @@ static int kgsl_setup_dmabuf_useraddr(struct kgsl_device *device,
	vma = find_vma(current->mm, hostptr);

	if (vma && vma->vm_file) {
		int fd;

		ret = check_vma_flags(vma, entry->memdesc.flags);
		if (ret) {
			up_read(&current->mm->mmap_sem);
@@ -2306,10 +2295,13 @@ static int kgsl_setup_dmabuf_useraddr(struct kgsl_device *device,
			return -EFAULT;
		}

		/* Look for the fd that matches this the vma file */
		fd = iterate_fd(current->files, 0, match_file, vma->vm_file);
		if (fd != 0)
			dmabuf = dma_buf_get(fd - 1);
		/*
		 * Take a refcount because dma_buf_put() decrements the
		 * refcount
		 */
		get_file(vma->vm_file);

		dmabuf = vma->vm_file->private_data;
	}

	if (IS_ERR_OR_NULL(dmabuf)) {