|
@@ -12,8 +12,6 @@
|
|
#include <linux/sched.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/vmstat.h>
|
|
#include <linux/vmstat.h>
|
|
|
|
|
|
-struct mmu_gather;
|
|
|
|
-
|
|
|
|
#ifdef CONFIG_KSM
|
|
#ifdef CONFIG_KSM
|
|
int ksm_madvise(struct vm_area_struct *vma, unsigned long start,
|
|
int ksm_madvise(struct vm_area_struct *vma, unsigned long start,
|
|
unsigned long end, int advice, unsigned long *vm_flags);
|
|
unsigned long end, int advice, unsigned long *vm_flags);
|
|
@@ -27,19 +25,6 @@ static inline int ksm_fork(struct mm_struct *mm, struct mm_struct *oldmm)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-/*
|
|
|
|
- * For KSM to handle OOM without deadlock when it's breaking COW in a
|
|
|
|
- * likely victim of the OOM killer, exit_mmap() has to serialize with
|
|
|
|
- * ksm_exit() after freeing mm's pages but before freeing its page tables.
|
|
|
|
- * That leaves a window in which KSM might refault pages which have just
|
|
|
|
- * been finally unmapped: guard against that with ksm_test_exit(), and
|
|
|
|
- * use it after getting mmap_sem in ksm.c, to check if mm is exiting.
|
|
|
|
- */
|
|
|
|
-static inline bool ksm_test_exit(struct mm_struct *mm)
|
|
|
|
-{
|
|
|
|
- return atomic_read(&mm->mm_users) == 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static inline void ksm_exit(struct mm_struct *mm)
|
|
static inline void ksm_exit(struct mm_struct *mm)
|
|
{
|
|
{
|
|
if (test_bit(MMF_VM_MERGEABLE, &mm->flags))
|
|
if (test_bit(MMF_VM_MERGEABLE, &mm->flags))
|
|
@@ -79,11 +64,6 @@ static inline int ksm_fork(struct mm_struct *mm, struct mm_struct *oldmm)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static inline bool ksm_test_exit(struct mm_struct *mm)
|
|
|
|
-{
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static inline void ksm_exit(struct mm_struct *mm)
|
|
static inline void ksm_exit(struct mm_struct *mm)
|
|
{
|
|
{
|
|
}
|
|
}
|