[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] privcmd: return value of IOCTL_PRIVCMD_MMAPBATCH
Return value of IOCTL_PRIVCMD_MMAPBATCH is always 0 even if some entries are failed to map. IMHO, ioctl should return any failure code. It becomes a hotbed of bug. Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx> diff -r 65a419f81336 drivers/xen/privcmd/privcmd.c --- a/drivers/xen/privcmd/privcmd.c Tue Feb 19 11:22:24 2008 -0700 +++ b/drivers/xen/privcmd/privcmd.c Thu Feb 21 20:01:32 2008 +0900 @@ -164,7 +164,7 @@ static long privcmd_ioctl(struct file *f struct vm_area_struct *vma; xen_pfn_t __user *p; unsigned long addr, mfn, nr_pages; - int i; + int i, rc; if (!is_initial_xendomain()) return -EPERM; @@ -187,6 +187,7 @@ static long privcmd_ioctl(struct file *f return -EINVAL; } + ret = 0; p = m.arr; addr = m.addr; for (i = 0; i < nr_pages; i++, addr += PAGE_SIZE, p++) { @@ -195,15 +196,16 @@ static long privcmd_ioctl(struct file *f return -EFAULT; } - ret = direct_remap_pfn_range(vma, addr & PAGE_MASK, + rc = direct_remap_pfn_range(vma, addr & PAGE_MASK, mfn, PAGE_SIZE, vma->vm_page_prot, m.dom); - if (ret < 0) - put_user(0xF0000000 | mfn, p); + if (rc < 0) { + put_user(~(-1UL>>4) | mfn, p); + ret = rc; + } } up_write(&mm->mmap_sem); - ret = 0; } break; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |