ASoC: Intel: CHT: add support for pcm512x boards
[linux-2.6-microblaze.git] / mm / mmap.c
index 9c64852..6756b8b 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -90,12 +90,6 @@ static void unmap_region(struct mm_struct *mm,
  * MAP_PRIVATE r: (no) no      r: (yes) yes    r: (no) yes     r: (no) yes
  *             w: (no) no      w: (no) no      w: (copy) copy  w: (no) no
  *             x: (no) no      x: (no) yes     x: (no) yes     x: (yes) yes
- *
- * On arm64, PROT_EXEC has the following behaviour for both MAP_SHARED and
- * MAP_PRIVATE:
- *                                                             r: (no) no
- *                                                             w: (no) no
- *                                                             x: (yes) yes
  */
 pgprot_t protection_map[16] __ro_after_init = {
        __P000, __P001, __P010, __P011, __P100, __P101, __P110, __P111,
@@ -1276,26 +1270,22 @@ static struct anon_vma *reusable_anon_vma(struct vm_area_struct *old, struct vm_
  */
 struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma)
 {
-       struct anon_vma *anon_vma;
-       struct vm_area_struct *near;
-
-       near = vma->vm_next;
-       if (!near)
-               goto try_prev;
-
-       anon_vma = reusable_anon_vma(near, vma, near);
-       if (anon_vma)
-               return anon_vma;
-try_prev:
-       near = vma->vm_prev;
-       if (!near)
-               goto none;
-
-       anon_vma = reusable_anon_vma(near, near, vma);
-       if (anon_vma)
-               return anon_vma;
-none:
+       struct anon_vma *anon_vma = NULL;
+
+       /* Try next first. */
+       if (vma->vm_next) {
+               anon_vma = reusable_anon_vma(vma->vm_next, vma, vma->vm_next);
+               if (anon_vma)
+                       return anon_vma;
+       }
+
+       /* Try prev next. */
+       if (vma->vm_prev)
+               anon_vma = reusable_anon_vma(vma->vm_prev, vma->vm_prev, vma);
+
        /*
+        * We might reach here with anon_vma == NULL if we can't find
+        * any reusable anon_vma.
         * There's no absolute need to look only at touching neighbours:
         * we could search further afield for "compatible" anon_vmas.
         * But it would probably just be a waste of time searching,
@@ -1303,7 +1293,7 @@ none:
         * We're trying to allow mprotect remerging later on,
         * not trying to minimize memory used for anon_vmas.
         */
-       return NULL;
+       return anon_vma;
 }
 
 /*
@@ -3342,6 +3332,8 @@ static const struct vm_operations_struct special_mapping_vmops = {
        .fault = special_mapping_fault,
        .mremap = special_mapping_mremap,
        .name = special_mapping_name,
+       /* vDSO code relies that VVAR can't be accessed remotely */
+       .access = NULL,
 };
 
 static const struct vm_operations_struct legacy_special_mapping_vmops = {