diff options
Diffstat (limited to 'mm/internal.h')
-rw-r--r-- | mm/internal.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/mm/internal.h b/mm/internal.h index 1cfbf2e2bc9e..e4e728bdf324 100644 --- a/mm/internal.h +++ b/mm/internal.h | |||
@@ -146,6 +146,22 @@ static inline void mlock_migrate_page(struct page *newpage, struct page *page) | |||
146 | } | 146 | } |
147 | } | 147 | } |
148 | 148 | ||
149 | /* | ||
150 | * free_page_mlock() -- clean up attempts to free and mlocked() page. | ||
151 | * Page should not be on lru, so no need to fix that up. | ||
152 | * free_pages_check() will verify... | ||
153 | */ | ||
154 | static inline void free_page_mlock(struct page *page) | ||
155 | { | ||
156 | if (unlikely(TestClearPageMlocked(page))) { | ||
157 | unsigned long flags; | ||
158 | |||
159 | local_irq_save(flags); | ||
160 | __dec_zone_page_state(page, NR_MLOCK); | ||
161 | __count_vm_event(UNEVICTABLE_MLOCKFREED); | ||
162 | local_irq_restore(flags); | ||
163 | } | ||
164 | } | ||
149 | 165 | ||
150 | #else /* CONFIG_UNEVICTABLE_LRU */ | 166 | #else /* CONFIG_UNEVICTABLE_LRU */ |
151 | static inline int is_mlocked_vma(struct vm_area_struct *v, struct page *p) | 167 | static inline int is_mlocked_vma(struct vm_area_struct *v, struct page *p) |
@@ -155,6 +171,7 @@ static inline int is_mlocked_vma(struct vm_area_struct *v, struct page *p) | |||
155 | static inline void clear_page_mlock(struct page *page) { } | 171 | static inline void clear_page_mlock(struct page *page) { } |
156 | static inline void mlock_vma_page(struct page *page) { } | 172 | static inline void mlock_vma_page(struct page *page) { } |
157 | static inline void mlock_migrate_page(struct page *new, struct page *old) { } | 173 | static inline void mlock_migrate_page(struct page *new, struct page *old) { } |
174 | static inline void free_page_mlock(struct page *page) { } | ||
158 | 175 | ||
159 | #endif /* CONFIG_UNEVICTABLE_LRU */ | 176 | #endif /* CONFIG_UNEVICTABLE_LRU */ |
160 | 177 | ||