提交 f0c554fd 编写于 作者: H Hillf Danton 提交者: Greg Kroah-Hartman

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: NHillf Danton <dhillf@gmail.com>
Signed-off-by: NHans J. Koch <hjk@hansjkoch.de>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 d8408aef
......@@ -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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册