Merge tag 'for-linus-hmm' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
[linux-2.6-block.git] / arch / s390 / mm / gmap.c
index cd8e03f04d6daac463af57b15fe26dcc7ddc658d..edcdca97e85eeecbddb4fb650aaa5c0432a60259 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #include <linux/kernel.h>
-#include <linux/mm.h>
+#include <linux/pagewalk.h>
 #include <linux/swap.h>
 #include <linux/smp.h>
 #include <linux/spinlock.h>
@@ -2521,13 +2521,9 @@ static int __zap_zero_pages(pmd_t *pmd, unsigned long start,
        return 0;
 }
 
-static inline void zap_zero_pages(struct mm_struct *mm)
-{
-       struct mm_walk walk = { .pmd_entry = __zap_zero_pages };
-
-       walk.mm = mm;
-       walk_page_range(0, TASK_SIZE, &walk);
-}
+static const struct mm_walk_ops zap_zero_walk_ops = {
+       .pmd_entry      = __zap_zero_pages,
+};
 
 /*
  * switch on pgstes for its userspace process (for kvm)
@@ -2546,7 +2542,7 @@ int s390_enable_sie(void)
        mm->context.has_pgste = 1;
        /* split thp mappings and disable thp for future mappings */
        thp_split_mm(mm);
-       zap_zero_pages(mm);
+       walk_page_range(mm, 0, TASK_SIZE, &zap_zero_walk_ops, NULL);
        up_write(&mm->mmap_sem);
        return 0;
 }
@@ -2589,12 +2585,13 @@ static int __s390_enable_skey_hugetlb(pte_t *pte, unsigned long addr,
        return 0;
 }
 
+static const struct mm_walk_ops enable_skey_walk_ops = {
+       .hugetlb_entry          = __s390_enable_skey_hugetlb,
+       .pte_entry              = __s390_enable_skey_pte,
+};
+
 int s390_enable_skey(void)
 {
-       struct mm_walk walk = {
-               .hugetlb_entry = __s390_enable_skey_hugetlb,
-               .pte_entry = __s390_enable_skey_pte,
-       };
        struct mm_struct *mm = current->mm;
        struct vm_area_struct *vma;
        int rc = 0;
@@ -2614,8 +2611,7 @@ int s390_enable_skey(void)
        }
        mm->def_flags &= ~VM_MERGEABLE;
 
-       walk.mm = mm;
-       walk_page_range(0, TASK_SIZE, &walk);
+       walk_page_range(mm, 0, TASK_SIZE, &enable_skey_walk_ops, NULL);
 
 out_up:
        up_write(&mm->mmap_sem);
@@ -2633,13 +2629,14 @@ static int __s390_reset_cmma(pte_t *pte, unsigned long addr,
        return 0;
 }
 
+static const struct mm_walk_ops reset_cmma_walk_ops = {
+       .pte_entry              = __s390_reset_cmma,
+};
+
 void s390_reset_cmma(struct mm_struct *mm)
 {
-       struct mm_walk walk = { .pte_entry = __s390_reset_cmma };
-
        down_write(&mm->mmap_sem);
-       walk.mm = mm;
-       walk_page_range(0, TASK_SIZE, &walk);
+       walk_page_range(mm, 0, TASK_SIZE, &reset_cmma_walk_ops, NULL);
        up_write(&mm->mmap_sem);
 }
 EXPORT_SYMBOL_GPL(s390_reset_cmma);