include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[safe/jmp/linux-2.6] / arch / powerpc / mm / subpage-prot.c
index 4cafc0c..e4f8f1f 100644 (file)
@@ -10,7 +10,6 @@
 #include <linux/errno.h>
 #include <linux/kernel.h>
 #include <linux/gfp.h>
-#include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/mm.h>
 #include <linux/hugetlb.h>
@@ -24,9 +23,9 @@
  * Also makes sure that the subpage_prot_table structure is
  * reinitialized for the next user.
  */
-void subpage_prot_free(pgd_t *pgd)
+void subpage_prot_free(struct mm_struct *mm)
 {
-       struct subpage_prot_table *spt = pgd_subpage_prot(pgd);
+       struct subpage_prot_table *spt = &mm->context.spt;
        unsigned long i, j, addr;
        u32 **p;
 
@@ -51,6 +50,13 @@ void subpage_prot_free(pgd_t *pgd)
        spt->maxaddr = 0;
 }
 
+void subpage_prot_init_new_context(struct mm_struct *mm)
+{
+       struct subpage_prot_table *spt = &mm->context.spt;
+
+       memset(spt, 0, sizeof(*spt));
+}
+
 static void hpte_flush_range(struct mm_struct *mm, unsigned long addr,
                             int npages)
 {
@@ -87,7 +93,7 @@ static void hpte_flush_range(struct mm_struct *mm, unsigned long addr,
 static void subpage_prot_clear(unsigned long addr, unsigned long len)
 {
        struct mm_struct *mm = current->mm;
-       struct subpage_prot_table *spt = pgd_subpage_prot(mm->pgd);
+       struct subpage_prot_table *spt = &mm->context.spt;
        u32 **spm, *spp;
        int i, nw;
        unsigned long next, limit;
@@ -136,7 +142,7 @@ static void subpage_prot_clear(unsigned long addr, unsigned long len)
 long sys_subpage_prot(unsigned long addr, unsigned long len, u32 __user *map)
 {
        struct mm_struct *mm = current->mm;
-       struct subpage_prot_table *spt = pgd_subpage_prot(mm->pgd);
+       struct subpage_prot_table *spt = &mm->context.spt;
        u32 **spm, *spp;
        int i, nw;
        unsigned long next, limit;