fib_trie: Make fib_table rcu safe
[firefly-linux-kernel-4.4.55.git] / mm / huge_memory.c
index 8e07342b52c0406982e3cdd2e747c4f18a9efe01..fc00c8cb5a82ee89addf4d2ee8983894bf6aa5d1 100644 (file)
@@ -1493,12 +1493,14 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
                        return 0;
                }
 
-               ret = 1;
-               entry = pmdp_get_and_clear_notify(mm, addr, pmd);
-               entry = pmd_modify(entry, newprot);
-               ret = HPAGE_PMD_NR;
-               set_pmd_at(mm, addr, pmd, entry);
-               BUG_ON(pmd_write(entry));
+               if (!prot_numa || !pmd_protnone(*pmd)) {
+                       ret = 1;
+                       entry = pmdp_get_and_clear_notify(mm, addr, pmd);
+                       entry = pmd_modify(entry, newprot);
+                       ret = HPAGE_PMD_NR;
+                       set_pmd_at(mm, addr, pmd, entry);
+                       BUG_ON(pmd_write(entry));
+               }
                spin_unlock(ptl);
        }