]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
xen/privcmd: mmapbatch-v2 fixes
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 21 Jan 2010 15:05:02 +0000 (15:05 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 21 Jan 2010 15:05:02 +0000 (15:05 +0000)
- clear error indication array when no error encountered
- no need to copy back mfn array in compat mode shim

Signed-off-by: Jan Beulich <jbeulich@novell.com>
drivers/xen/privcmd/compat_privcmd.c
drivers/xen/privcmd/privcmd.c

index cab5663e9ffa6dae6cf868041211a88c394dec8b..cb336a25d736208e8f3a3311c9a20417a11e47b3 100644 (file)
@@ -103,7 +103,7 @@ int privcmd_ioctl_32(int fd, unsigned int cmd, unsigned long arg)
                struct privcmd_mmapbatch_v2_32 n32;
 #ifdef xen_pfn32_t
                xen_pfn_t *__user arr;
-               xen_pfn32_t *__user arr32;
+               const xen_pfn32_t *__user arr32;
                unsigned int i;
 #endif
 
@@ -134,17 +134,6 @@ int privcmd_ioctl_32(int fd, unsigned int cmd, unsigned long arg)
 #endif
 
                ret = sys_ioctl(fd, IOCTL_PRIVCMD_MMAPBATCH_V2, (unsigned long)p);
-
-#ifdef xen_pfn32_t
-               for (i = 0; !ret && i < n32.num; ++i) {
-                       xen_pfn_t mfn;
-
-                       if (get_user(mfn, arr + i) || put_user(mfn, arr32 + i))
-                               ret = -EFAULT;
-                       else if (mfn != (xen_pfn32_t)mfn)
-                               ret = -ERANGE;
-               }
-#endif
        }
                break;
        default:
index 50f14a9c3ef4723f9362d4bc12309fb825871040..8792c2ffce576b747e90db7fb5e3428d82d8a8f4 100644 (file)
@@ -409,7 +409,8 @@ static long privcmd_ioctl(struct file *file,
                                        ret = -EFAULT;
                                i += nr; p += nr;
                        }
-               }
+               } else if (clear_user(m.err, nr_pages * sizeof(*m.err)))
+                       ret = -EFAULT;
 
        mmapbatch_v2_out:
                list_for_each_safe(l, l2, &pagelist)