|
@@ -21,6 +21,7 @@
|
|
|
#include <linux/unistd.h>
|
|
|
#include <linux/security.h>
|
|
|
#include <linux/timex.h>
|
|
|
+#include <linux/migrate.h>
|
|
|
|
|
|
#include <asm/uaccess.h>
|
|
|
|
|
@@ -934,3 +935,25 @@ asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp)
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
|
+
|
|
|
+#ifdef CONFIG_NUMA
|
|
|
+asmlinkage long compat_sys_move_pages(pid_t pid, unsigned long nr_pages,
|
|
|
+ void __user *pages32,
|
|
|
+ const int __user *nodes,
|
|
|
+ int __user *status,
|
|
|
+ int flags)
|
|
|
+{
|
|
|
+ const void __user * __user *pages;
|
|
|
+ int i;
|
|
|
+
|
|
|
+ pages = compat_alloc_user_space(nr_pages * sizeof(void *));
|
|
|
+ for (i = 0; i < nr_pages; i++) {
|
|
|
+ compat_uptr_t p;
|
|
|
+
|
|
|
+ if (get_user(p, (compat_uptr_t *)(pages32 + i)) ||
|
|
|
+ put_user(compat_ptr(p), pages + i))
|
|
|
+ return -EFAULT;
|
|
|
+ }
|
|
|
+ return sys_move_pages(pid, nr_pages, pages, nodes, status, flags);
|
|
|
+}
|
|
|
+#endif
|