diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/gfp.h | 10 | ||||
-rw-r--r-- | include/linux/memcontrol.h | 2 | ||||
-rw-r--r-- | include/linux/slab.h | 11 | ||||
-rw-r--r-- | include/linux/thread_info.h | 2 |
4 files changed, 8 insertions, 17 deletions
diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 39b81dc7d01a..d382db71e300 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h | |||
@@ -31,7 +31,6 @@ struct vm_area_struct; | |||
31 | #define ___GFP_HARDWALL 0x20000u | 31 | #define ___GFP_HARDWALL 0x20000u |
32 | #define ___GFP_THISNODE 0x40000u | 32 | #define ___GFP_THISNODE 0x40000u |
33 | #define ___GFP_RECLAIMABLE 0x80000u | 33 | #define ___GFP_RECLAIMABLE 0x80000u |
34 | #define ___GFP_KMEMCG 0x100000u | ||
35 | #define ___GFP_NOTRACK 0x200000u | 34 | #define ___GFP_NOTRACK 0x200000u |
36 | #define ___GFP_NO_KSWAPD 0x400000u | 35 | #define ___GFP_NO_KSWAPD 0x400000u |
37 | #define ___GFP_OTHER_NODE 0x800000u | 36 | #define ___GFP_OTHER_NODE 0x800000u |
@@ -91,7 +90,6 @@ struct vm_area_struct; | |||
91 | 90 | ||
92 | #define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD) | 91 | #define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD) |
93 | #define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */ | 92 | #define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */ |
94 | #define __GFP_KMEMCG ((__force gfp_t)___GFP_KMEMCG) /* Allocation comes from a memcg-accounted resource */ | ||
95 | #define __GFP_WRITE ((__force gfp_t)___GFP_WRITE) /* Allocator intends to dirty page */ | 93 | #define __GFP_WRITE ((__force gfp_t)___GFP_WRITE) /* Allocator intends to dirty page */ |
96 | 94 | ||
97 | /* | 95 | /* |
@@ -353,6 +351,10 @@ extern struct page *alloc_pages_vma(gfp_t gfp_mask, int order, | |||
353 | #define alloc_page_vma_node(gfp_mask, vma, addr, node) \ | 351 | #define alloc_page_vma_node(gfp_mask, vma, addr, node) \ |
354 | alloc_pages_vma(gfp_mask, 0, vma, addr, node) | 352 | alloc_pages_vma(gfp_mask, 0, vma, addr, node) |
355 | 353 | ||
354 | extern struct page *alloc_kmem_pages(gfp_t gfp_mask, unsigned int order); | ||
355 | extern struct page *alloc_kmem_pages_node(int nid, gfp_t gfp_mask, | ||
356 | unsigned int order); | ||
357 | |||
356 | extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order); | 358 | extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order); |
357 | extern unsigned long get_zeroed_page(gfp_t gfp_mask); | 359 | extern unsigned long get_zeroed_page(gfp_t gfp_mask); |
358 | 360 | ||
@@ -372,8 +374,8 @@ extern void free_pages(unsigned long addr, unsigned int order); | |||
372 | extern void free_hot_cold_page(struct page *page, int cold); | 374 | extern void free_hot_cold_page(struct page *page, int cold); |
373 | extern void free_hot_cold_page_list(struct list_head *list, int cold); | 375 | extern void free_hot_cold_page_list(struct list_head *list, int cold); |
374 | 376 | ||
375 | extern void __free_memcg_kmem_pages(struct page *page, unsigned int order); | 377 | extern void __free_kmem_pages(struct page *page, unsigned int order); |
376 | extern void free_memcg_kmem_pages(unsigned long addr, unsigned int order); | 378 | extern void free_kmem_pages(unsigned long addr, unsigned int order); |
377 | 379 | ||
378 | #define __free_page(page) __free_pages((page), 0) | 380 | #define __free_page(page) __free_pages((page), 0) |
379 | #define free_page(addr) free_pages((addr), 0) | 381 | #define free_page(addr) free_pages((addr), 0) |
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 96e5d2573eb0..5155d09e749d 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
@@ -537,7 +537,7 @@ memcg_kmem_newpage_charge(gfp_t gfp, struct mem_cgroup **memcg, int order) | |||
537 | * res_counter_charge_nofail, but we hope those allocations are rare, | 537 | * res_counter_charge_nofail, but we hope those allocations are rare, |
538 | * and won't be worth the trouble. | 538 | * and won't be worth the trouble. |
539 | */ | 539 | */ |
540 | if (!(gfp & __GFP_KMEMCG) || (gfp & __GFP_NOFAIL)) | 540 | if (gfp & __GFP_NOFAIL) |
541 | return true; | 541 | return true; |
542 | if (in_interrupt() || (!current->mm) || (current->flags & PF_KTHREAD)) | 542 | if (in_interrupt() || (!current->mm) || (current->flags & PF_KTHREAD)) |
543 | return true; | 543 | return true; |
diff --git a/include/linux/slab.h b/include/linux/slab.h index 307bfbe62387..a6aab2c0dfc5 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h | |||
@@ -369,16 +369,7 @@ kmem_cache_alloc_node_trace(struct kmem_cache *s, | |||
369 | #include <linux/slub_def.h> | 369 | #include <linux/slub_def.h> |
370 | #endif | 370 | #endif |
371 | 371 | ||
372 | static __always_inline void * | 372 | extern void *kmalloc_order(size_t size, gfp_t flags, unsigned int order); |
373 | kmalloc_order(size_t size, gfp_t flags, unsigned int order) | ||
374 | { | ||
375 | void *ret; | ||
376 | |||
377 | flags |= (__GFP_COMP | __GFP_KMEMCG); | ||
378 | ret = (void *) __get_free_pages(flags, order); | ||
379 | kmemleak_alloc(ret, size, 1, flags); | ||
380 | return ret; | ||
381 | } | ||
382 | 373 | ||
383 | #ifdef CONFIG_TRACING | 374 | #ifdef CONFIG_TRACING |
384 | extern void *kmalloc_order_trace(size_t size, gfp_t flags, unsigned int order); | 375 | extern void *kmalloc_order_trace(size_t size, gfp_t flags, unsigned int order); |
diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h index cb0cec94fda3..ff307b548ed3 100644 --- a/include/linux/thread_info.h +++ b/include/linux/thread_info.h | |||
@@ -61,8 +61,6 @@ extern long do_no_restart_syscall(struct restart_block *parm); | |||
61 | # define THREADINFO_GFP (GFP_KERNEL | __GFP_NOTRACK) | 61 | # define THREADINFO_GFP (GFP_KERNEL | __GFP_NOTRACK) |
62 | #endif | 62 | #endif |
63 | 63 | ||
64 | #define THREADINFO_GFP_ACCOUNTED (THREADINFO_GFP | __GFP_KMEMCG) | ||
65 | |||
66 | /* | 64 | /* |
67 | * flag set/clear/test wrappers | 65 | * flag set/clear/test wrappers |
68 | * - pass TIF_xxxx constants to these functions | 66 | * - pass TIF_xxxx constants to these functions |