Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
authorAlex Shi <alex.shi@linaro.org>
Fri, 10 Jan 2014 15:56:41 +0000 (23:56 +0800)
committerAlex Shi <alex.shi@linaro.org>
Fri, 10 Jan 2014 15:56:41 +0000 (23:56 +0800)
Conflicts:
include/linux/mm_types.h

1  2 
include/linux/mm_types.h
kernel/fork.c
kernel/freezer.c
kernel/sched/core.c
mm/mprotect.c
security/selinux/hooks.c

index 93ddd4eb910b8d398927ee29686f7f9fbcd837be,10a9a17342fcd83be68560170b1528262880a8fc..c14df44a95672f5404952a56d3606aa59fa77b72
@@@ -462,14 -465,45 +470,53 @@@ static inline cpumask_t *mm_cpumask(str
        return mm->cpu_vm_mask_var;
  }
  
 +/* Return the name for an anonymous mapping or NULL for a file-backed mapping */
 +static inline const char __user *vma_get_anon_name(struct vm_area_struct *vma)
 +{
 +      if (vma->vm_file)
 +              return NULL;
 +
 +      return vma->shared.anon_name;
 +}
+ #if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
+ /*
+  * Memory barriers to keep this state in sync are graciously provided by
+  * the page table locks, outside of which no page table modifications happen.
+  * The barriers below prevent the compiler from re-ordering the instructions
+  * around the memory barriers that are already present in the code.
+  */
+ static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
+ {
+       barrier();
+       return mm->tlb_flush_pending;
+ }
+ static inline void set_tlb_flush_pending(struct mm_struct *mm)
+ {
+       mm->tlb_flush_pending = true;
+       /*
+        * Guarantee that the tlb_flush_pending store does not leak into the
+        * critical section updating the page tables
+        */
+       smp_mb__before_spinlock();
+ }
+ /* Clearing is done after a TLB flush, which also provides a barrier. */
+ static inline void clear_tlb_flush_pending(struct mm_struct *mm)
+ {
+       barrier();
+       mm->tlb_flush_pending = false;
+ }
+ #else
+ static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
+ {
+       return false;
+ }
+ static inline void set_tlb_flush_pending(struct mm_struct *mm)
+ {
+ }
+ static inline void clear_tlb_flush_pending(struct mm_struct *mm)
+ {
+ }
+ #endif
  
  #endif /* _LINUX_MM_TYPES_H */
diff --cc kernel/fork.c
Simple merge
Simple merge
Simple merge
diff --cc mm/mprotect.c
Simple merge
Simple merge