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

Commit f0c554fd authored by Hillf Danton's avatar Hillf Danton Committed by Greg Kroah-Hartman
Browse files

uio: fix finding mm index for vma



When finding mm index for vma it looks more flexible that the mm could
be sparse, and both the size of mm and the pgoff of vma could give
correct selection.

Signed-off-by: default avatarHillf Danton <dhillf@gmail.com>
Signed-off-by: default avatarHans J. Koch <hjk@hansjkoch.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent d8408aef
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -587,14 +587,12 @@ static ssize_t uio_write(struct file *filep, const char __user *buf,

static int uio_find_mem_index(struct vm_area_struct *vma)
{
	int mi;
	struct uio_device *idev = vma->vm_private_data;

	for (mi = 0; mi < MAX_UIO_MAPS; mi++) {
		if (idev->info->mem[mi].size == 0)
	if (vma->vm_pgoff < MAX_UIO_MAPS) {
		if (idev->info->mem[vma->vm_pgoff].size == 0)
			return -1;
		if (vma->vm_pgoff == mi)
			return mi;
		return (int)vma->vm_pgoff;
	}
	return -1;
}