• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* memcontrol.c - Memory Controller
2  *
3  * Copyright IBM Corporation, 2007
4  * Author Balbir Singh <balbir@linux.vnet.ibm.com>
5  *
6  * Copyright 2007 OpenVZ SWsoft Inc
7  * Author: Pavel Emelianov <xemul@openvz.org>
8  *
9  * Memory thresholds
10  * Copyright (C) 2009 Nokia Corporation
11  * Author: Kirill A. Shutemov
12  *
13  * Kernel Memory Controller
14  * Copyright (C) 2012 Parallels Inc. and Google Inc.
15  * Authors: Glauber Costa and Suleiman Souhlal
16  *
17  * Native page reclaim
18  * Charge lifetime sanitation
19  * Lockless page tracking & accounting
20  * Unified hierarchy configuration model
21  * Copyright (C) 2015 Red Hat, Inc., Johannes Weiner
22  *
23  * This program is free software; you can redistribute it and/or modify
24  * it under the terms of the GNU General Public License as published by
25  * the Free Software Foundation; either version 2 of the License, or
26  * (at your option) any later version.
27  *
28  * This program is distributed in the hope that it will be useful,
29  * but WITHOUT ANY WARRANTY; without even the implied warranty of
30  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
31  * GNU General Public License for more details.
32  */
33 
34 #include <linux/page_counter.h>
35 #include <linux/memcontrol.h>
36 #include <linux/cgroup.h>
37 #include <linux/mm.h>
38 #include <linux/sched/mm.h>
39 #include <linux/shmem_fs.h>
40 #include <linux/hugetlb.h>
41 #include <linux/pagemap.h>
42 #include <linux/smp.h>
43 #include <linux/page-flags.h>
44 #include <linux/backing-dev.h>
45 #include <linux/bit_spinlock.h>
46 #include <linux/rcupdate.h>
47 #include <linux/limits.h>
48 #include <linux/export.h>
49 #include <linux/mutex.h>
50 #include <linux/rbtree.h>
51 #include <linux/slab.h>
52 #include <linux/swap.h>
53 #include <linux/swapops.h>
54 #include <linux/spinlock.h>
55 #include <linux/eventfd.h>
56 #include <linux/poll.h>
57 #include <linux/sort.h>
58 #include <linux/fs.h>
59 #include <linux/seq_file.h>
60 #include <linux/vmpressure.h>
61 #include <linux/mm_inline.h>
62 #include <linux/swap_cgroup.h>
63 #include <linux/cpu.h>
64 #include <linux/oom.h>
65 #include <linux/lockdep.h>
66 #include <linux/file.h>
67 #include <linux/tracehook.h>
68 #include "internal.h"
69 #include <net/sock.h>
70 #include <net/ip.h>
71 #include "slab.h"
72 
73 #include <linux/uaccess.h>
74 
75 #include <trace/events/vmscan.h>
76 
77 struct cgroup_subsys memory_cgrp_subsys __read_mostly;
78 EXPORT_SYMBOL(memory_cgrp_subsys);
79 
80 struct mem_cgroup *root_mem_cgroup __read_mostly;
81 
82 #define MEM_CGROUP_RECLAIM_RETRIES	5
83 
84 /* Socket memory accounting disabled? */
85 static bool cgroup_memory_nosocket;
86 
87 /* Kernel memory accounting disabled? */
88 static bool cgroup_memory_nokmem;
89 
90 /* Whether the swap controller is active */
91 #ifdef CONFIG_MEMCG_SWAP
92 int do_swap_account __read_mostly;
93 #else
94 #define do_swap_account		0
95 #endif
96 
97 /* Whether legacy memory+swap accounting is active */
do_memsw_account(void)98 static bool do_memsw_account(void)
99 {
100 	return !cgroup_subsys_on_dfl(memory_cgrp_subsys) && do_swap_account;
101 }
102 
103 static const char *const mem_cgroup_lru_names[] = {
104 	"inactive_anon",
105 	"active_anon",
106 	"inactive_file",
107 	"active_file",
108 	"unevictable",
109 };
110 
111 #define THRESHOLDS_EVENTS_TARGET 128
112 #define SOFTLIMIT_EVENTS_TARGET 1024
113 #define NUMAINFO_EVENTS_TARGET	1024
114 
115 /*
116  * Cgroups above their limits are maintained in a RB-Tree, independent of
117  * their hierarchy representation
118  */
119 
120 struct mem_cgroup_tree_per_node {
121 	struct rb_root rb_root;
122 	struct rb_node *rb_rightmost;
123 	spinlock_t lock;
124 };
125 
126 struct mem_cgroup_tree {
127 	struct mem_cgroup_tree_per_node *rb_tree_per_node[MAX_NUMNODES];
128 };
129 
130 static struct mem_cgroup_tree soft_limit_tree __read_mostly;
131 
132 /* for OOM */
133 struct mem_cgroup_eventfd_list {
134 	struct list_head list;
135 	struct eventfd_ctx *eventfd;
136 };
137 
138 /*
139  * cgroup_event represents events which userspace want to receive.
140  */
141 struct mem_cgroup_event {
142 	/*
143 	 * memcg which the event belongs to.
144 	 */
145 	struct mem_cgroup *memcg;
146 	/*
147 	 * eventfd to signal userspace about the event.
148 	 */
149 	struct eventfd_ctx *eventfd;
150 	/*
151 	 * Each of these stored in a list by the cgroup.
152 	 */
153 	struct list_head list;
154 	/*
155 	 * register_event() callback will be used to add new userspace
156 	 * waiter for changes related to this event.  Use eventfd_signal()
157 	 * on eventfd to send notification to userspace.
158 	 */
159 	int (*register_event)(struct mem_cgroup *memcg,
160 			      struct eventfd_ctx *eventfd, const char *args);
161 	/*
162 	 * unregister_event() callback will be called when userspace closes
163 	 * the eventfd or on cgroup removing.  This callback must be set,
164 	 * if you want provide notification functionality.
165 	 */
166 	void (*unregister_event)(struct mem_cgroup *memcg,
167 				 struct eventfd_ctx *eventfd);
168 	/*
169 	 * All fields below needed to unregister event when
170 	 * userspace closes eventfd.
171 	 */
172 	poll_table pt;
173 	wait_queue_head_t *wqh;
174 	wait_queue_entry_t wait;
175 	struct work_struct remove;
176 };
177 
178 static void mem_cgroup_threshold(struct mem_cgroup *memcg);
179 static void mem_cgroup_oom_notify(struct mem_cgroup *memcg);
180 
181 /* Stuffs for move charges at task migration. */
182 /*
183  * Types of charges to be moved.
184  */
185 #define MOVE_ANON	0x1U
186 #define MOVE_FILE	0x2U
187 #define MOVE_MASK	(MOVE_ANON | MOVE_FILE)
188 
189 /* "mc" and its members are protected by cgroup_mutex */
190 static struct move_charge_struct {
191 	spinlock_t	  lock; /* for from, to */
192 	struct mm_struct  *mm;
193 	struct mem_cgroup *from;
194 	struct mem_cgroup *to;
195 	unsigned long flags;
196 	unsigned long precharge;
197 	unsigned long moved_charge;
198 	unsigned long moved_swap;
199 	struct task_struct *moving_task;	/* a task moving charges */
200 	wait_queue_head_t waitq;		/* a waitq for other context */
201 } mc = {
202 	.lock = __SPIN_LOCK_UNLOCKED(mc.lock),
203 	.waitq = __WAIT_QUEUE_HEAD_INITIALIZER(mc.waitq),
204 };
205 
206 /*
207  * Maximum loops in mem_cgroup_hierarchical_reclaim(), used for soft
208  * limit reclaim to prevent infinite loops, if they ever occur.
209  */
210 #define	MEM_CGROUP_MAX_RECLAIM_LOOPS		100
211 #define	MEM_CGROUP_MAX_SOFT_LIMIT_RECLAIM_LOOPS	2
212 
213 enum charge_type {
214 	MEM_CGROUP_CHARGE_TYPE_CACHE = 0,
215 	MEM_CGROUP_CHARGE_TYPE_ANON,
216 	MEM_CGROUP_CHARGE_TYPE_SWAPOUT,	/* for accounting swapcache */
217 	MEM_CGROUP_CHARGE_TYPE_DROP,	/* a page was unused swap cache */
218 	NR_CHARGE_TYPE,
219 };
220 
221 /* for encoding cft->private value on file */
222 enum res_type {
223 	_MEM,
224 	_MEMSWAP,
225 	_OOM_TYPE,
226 	_KMEM,
227 	_TCP,
228 };
229 
230 #define MEMFILE_PRIVATE(x, val)	((x) << 16 | (val))
231 #define MEMFILE_TYPE(val)	((val) >> 16 & 0xffff)
232 #define MEMFILE_ATTR(val)	((val) & 0xffff)
233 /* Used for OOM nofiier */
234 #define OOM_CONTROL		(0)
235 
236 /* Some nice accessors for the vmpressure. */
memcg_to_vmpressure(struct mem_cgroup * memcg)237 struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg)
238 {
239 	if (!memcg)
240 		memcg = root_mem_cgroup;
241 	return &memcg->vmpressure;
242 }
243 
vmpressure_to_css(struct vmpressure * vmpr)244 struct cgroup_subsys_state *vmpressure_to_css(struct vmpressure *vmpr)
245 {
246 	return &container_of(vmpr, struct mem_cgroup, vmpressure)->css;
247 }
248 
mem_cgroup_is_root(struct mem_cgroup * memcg)249 static inline bool mem_cgroup_is_root(struct mem_cgroup *memcg)
250 {
251 	return (memcg == root_mem_cgroup);
252 }
253 
254 #ifndef CONFIG_SLOB
255 /*
256  * This will be the memcg's index in each cache's ->memcg_params.memcg_caches.
257  * The main reason for not using cgroup id for this:
258  *  this works better in sparse environments, where we have a lot of memcgs,
259  *  but only a few kmem-limited. Or also, if we have, for instance, 200
260  *  memcgs, and none but the 200th is kmem-limited, we'd have to have a
261  *  200 entry array for that.
262  *
263  * The current size of the caches array is stored in memcg_nr_cache_ids. It
264  * will double each time we have to increase it.
265  */
266 static DEFINE_IDA(memcg_cache_ida);
267 int memcg_nr_cache_ids;
268 
269 /* Protects memcg_nr_cache_ids */
270 static DECLARE_RWSEM(memcg_cache_ids_sem);
271 
memcg_get_cache_ids(void)272 void memcg_get_cache_ids(void)
273 {
274 	down_read(&memcg_cache_ids_sem);
275 }
276 
memcg_put_cache_ids(void)277 void memcg_put_cache_ids(void)
278 {
279 	up_read(&memcg_cache_ids_sem);
280 }
281 
282 /*
283  * MIN_SIZE is different than 1, because we would like to avoid going through
284  * the alloc/free process all the time. In a small machine, 4 kmem-limited
285  * cgroups is a reasonable guess. In the future, it could be a parameter or
286  * tunable, but that is strictly not necessary.
287  *
288  * MAX_SIZE should be as large as the number of cgrp_ids. Ideally, we could get
289  * this constant directly from cgroup, but it is understandable that this is
290  * better kept as an internal representation in cgroup.c. In any case, the
291  * cgrp_id space is not getting any smaller, and we don't have to necessarily
292  * increase ours as well if it increases.
293  */
294 #define MEMCG_CACHES_MIN_SIZE 4
295 #define MEMCG_CACHES_MAX_SIZE MEM_CGROUP_ID_MAX
296 
297 /*
298  * A lot of the calls to the cache allocation functions are expected to be
299  * inlined by the compiler. Since the calls to memcg_kmem_get_cache are
300  * conditional to this static branch, we'll have to allow modules that does
301  * kmem_cache_alloc and the such to see this symbol as well
302  */
303 DEFINE_STATIC_KEY_FALSE(memcg_kmem_enabled_key);
304 EXPORT_SYMBOL(memcg_kmem_enabled_key);
305 
306 struct workqueue_struct *memcg_kmem_cache_wq;
307 
308 #endif /* !CONFIG_SLOB */
309 
310 /**
311  * mem_cgroup_css_from_page - css of the memcg associated with a page
312  * @page: page of interest
313  *
314  * If memcg is bound to the default hierarchy, css of the memcg associated
315  * with @page is returned.  The returned css remains associated with @page
316  * until it is released.
317  *
318  * If memcg is bound to a traditional hierarchy, the css of root_mem_cgroup
319  * is returned.
320  */
mem_cgroup_css_from_page(struct page * page)321 struct cgroup_subsys_state *mem_cgroup_css_from_page(struct page *page)
322 {
323 	struct mem_cgroup *memcg;
324 
325 	memcg = page->mem_cgroup;
326 
327 	if (!memcg || !cgroup_subsys_on_dfl(memory_cgrp_subsys))
328 		memcg = root_mem_cgroup;
329 
330 	return &memcg->css;
331 }
332 
333 /**
334  * page_cgroup_ino - return inode number of the memcg a page is charged to
335  * @page: the page
336  *
337  * Look up the closest online ancestor of the memory cgroup @page is charged to
338  * and return its inode number or 0 if @page is not charged to any cgroup. It
339  * is safe to call this function without holding a reference to @page.
340  *
341  * Note, this function is inherently racy, because there is nothing to prevent
342  * the cgroup inode from getting torn down and potentially reallocated a moment
343  * after page_cgroup_ino() returns, so it only should be used by callers that
344  * do not care (such as procfs interfaces).
345  */
page_cgroup_ino(struct page * page)346 ino_t page_cgroup_ino(struct page *page)
347 {
348 	struct mem_cgroup *memcg;
349 	unsigned long ino = 0;
350 
351 	rcu_read_lock();
352 	memcg = READ_ONCE(page->mem_cgroup);
353 	while (memcg && !(memcg->css.flags & CSS_ONLINE))
354 		memcg = parent_mem_cgroup(memcg);
355 	if (memcg)
356 		ino = cgroup_ino(memcg->css.cgroup);
357 	rcu_read_unlock();
358 	return ino;
359 }
360 
361 static struct mem_cgroup_per_node *
mem_cgroup_page_nodeinfo(struct mem_cgroup * memcg,struct page * page)362 mem_cgroup_page_nodeinfo(struct mem_cgroup *memcg, struct page *page)
363 {
364 	int nid = page_to_nid(page);
365 
366 	return memcg->nodeinfo[nid];
367 }
368 
369 static struct mem_cgroup_tree_per_node *
soft_limit_tree_node(int nid)370 soft_limit_tree_node(int nid)
371 {
372 	return soft_limit_tree.rb_tree_per_node[nid];
373 }
374 
375 static struct mem_cgroup_tree_per_node *
soft_limit_tree_from_page(struct page * page)376 soft_limit_tree_from_page(struct page *page)
377 {
378 	int nid = page_to_nid(page);
379 
380 	return soft_limit_tree.rb_tree_per_node[nid];
381 }
382 
__mem_cgroup_insert_exceeded(struct mem_cgroup_per_node * mz,struct mem_cgroup_tree_per_node * mctz,unsigned long new_usage_in_excess)383 static void __mem_cgroup_insert_exceeded(struct mem_cgroup_per_node *mz,
384 					 struct mem_cgroup_tree_per_node *mctz,
385 					 unsigned long new_usage_in_excess)
386 {
387 	struct rb_node **p = &mctz->rb_root.rb_node;
388 	struct rb_node *parent = NULL;
389 	struct mem_cgroup_per_node *mz_node;
390 	bool rightmost = true;
391 
392 	if (mz->on_tree)
393 		return;
394 
395 	mz->usage_in_excess = new_usage_in_excess;
396 	if (!mz->usage_in_excess)
397 		return;
398 	while (*p) {
399 		parent = *p;
400 		mz_node = rb_entry(parent, struct mem_cgroup_per_node,
401 					tree_node);
402 		if (mz->usage_in_excess < mz_node->usage_in_excess) {
403 			p = &(*p)->rb_left;
404 			rightmost = false;
405 		}
406 
407 		/*
408 		 * We can't avoid mem cgroups that are over their soft
409 		 * limit by the same amount
410 		 */
411 		else if (mz->usage_in_excess >= mz_node->usage_in_excess)
412 			p = &(*p)->rb_right;
413 	}
414 
415 	if (rightmost)
416 		mctz->rb_rightmost = &mz->tree_node;
417 
418 	rb_link_node(&mz->tree_node, parent, p);
419 	rb_insert_color(&mz->tree_node, &mctz->rb_root);
420 	mz->on_tree = true;
421 }
422 
__mem_cgroup_remove_exceeded(struct mem_cgroup_per_node * mz,struct mem_cgroup_tree_per_node * mctz)423 static void __mem_cgroup_remove_exceeded(struct mem_cgroup_per_node *mz,
424 					 struct mem_cgroup_tree_per_node *mctz)
425 {
426 	if (!mz->on_tree)
427 		return;
428 
429 	if (&mz->tree_node == mctz->rb_rightmost)
430 		mctz->rb_rightmost = rb_prev(&mz->tree_node);
431 
432 	rb_erase(&mz->tree_node, &mctz->rb_root);
433 	mz->on_tree = false;
434 }
435 
mem_cgroup_remove_exceeded(struct mem_cgroup_per_node * mz,struct mem_cgroup_tree_per_node * mctz)436 static void mem_cgroup_remove_exceeded(struct mem_cgroup_per_node *mz,
437 				       struct mem_cgroup_tree_per_node *mctz)
438 {
439 	unsigned long flags;
440 
441 	spin_lock_irqsave(&mctz->lock, flags);
442 	__mem_cgroup_remove_exceeded(mz, mctz);
443 	spin_unlock_irqrestore(&mctz->lock, flags);
444 }
445 
soft_limit_excess(struct mem_cgroup * memcg)446 static unsigned long soft_limit_excess(struct mem_cgroup *memcg)
447 {
448 	unsigned long nr_pages = page_counter_read(&memcg->memory);
449 	unsigned long soft_limit = READ_ONCE(memcg->soft_limit);
450 	unsigned long excess = 0;
451 
452 	if (nr_pages > soft_limit)
453 		excess = nr_pages - soft_limit;
454 
455 	return excess;
456 }
457 
mem_cgroup_update_tree(struct mem_cgroup * memcg,struct page * page)458 static void mem_cgroup_update_tree(struct mem_cgroup *memcg, struct page *page)
459 {
460 	unsigned long excess;
461 	struct mem_cgroup_per_node *mz;
462 	struct mem_cgroup_tree_per_node *mctz;
463 
464 	mctz = soft_limit_tree_from_page(page);
465 	if (!mctz)
466 		return;
467 	/*
468 	 * Necessary to update all ancestors when hierarchy is used.
469 	 * because their event counter is not touched.
470 	 */
471 	for (; memcg; memcg = parent_mem_cgroup(memcg)) {
472 		mz = mem_cgroup_page_nodeinfo(memcg, page);
473 		excess = soft_limit_excess(memcg);
474 		/*
475 		 * We have to update the tree if mz is on RB-tree or
476 		 * mem is over its softlimit.
477 		 */
478 		if (excess || mz->on_tree) {
479 			unsigned long flags;
480 
481 			spin_lock_irqsave(&mctz->lock, flags);
482 			/* if on-tree, remove it */
483 			if (mz->on_tree)
484 				__mem_cgroup_remove_exceeded(mz, mctz);
485 			/*
486 			 * Insert again. mz->usage_in_excess will be updated.
487 			 * If excess is 0, no tree ops.
488 			 */
489 			__mem_cgroup_insert_exceeded(mz, mctz, excess);
490 			spin_unlock_irqrestore(&mctz->lock, flags);
491 		}
492 	}
493 }
494 
mem_cgroup_remove_from_trees(struct mem_cgroup * memcg)495 static void mem_cgroup_remove_from_trees(struct mem_cgroup *memcg)
496 {
497 	struct mem_cgroup_tree_per_node *mctz;
498 	struct mem_cgroup_per_node *mz;
499 	int nid;
500 
501 	for_each_node(nid) {
502 		mz = mem_cgroup_nodeinfo(memcg, nid);
503 		mctz = soft_limit_tree_node(nid);
504 		if (mctz)
505 			mem_cgroup_remove_exceeded(mz, mctz);
506 	}
507 }
508 
509 static struct mem_cgroup_per_node *
__mem_cgroup_largest_soft_limit_node(struct mem_cgroup_tree_per_node * mctz)510 __mem_cgroup_largest_soft_limit_node(struct mem_cgroup_tree_per_node *mctz)
511 {
512 	struct mem_cgroup_per_node *mz;
513 
514 retry:
515 	mz = NULL;
516 	if (!mctz->rb_rightmost)
517 		goto done;		/* Nothing to reclaim from */
518 
519 	mz = rb_entry(mctz->rb_rightmost,
520 		      struct mem_cgroup_per_node, tree_node);
521 	/*
522 	 * Remove the node now but someone else can add it back,
523 	 * we will to add it back at the end of reclaim to its correct
524 	 * position in the tree.
525 	 */
526 	__mem_cgroup_remove_exceeded(mz, mctz);
527 	if (!soft_limit_excess(mz->memcg) ||
528 	    !css_tryget_online(&mz->memcg->css))
529 		goto retry;
530 done:
531 	return mz;
532 }
533 
534 static struct mem_cgroup_per_node *
mem_cgroup_largest_soft_limit_node(struct mem_cgroup_tree_per_node * mctz)535 mem_cgroup_largest_soft_limit_node(struct mem_cgroup_tree_per_node *mctz)
536 {
537 	struct mem_cgroup_per_node *mz;
538 
539 	spin_lock_irq(&mctz->lock);
540 	mz = __mem_cgroup_largest_soft_limit_node(mctz);
541 	spin_unlock_irq(&mctz->lock);
542 	return mz;
543 }
544 
545 /*
546  * Return page count for single (non recursive) @memcg.
547  *
548  * Implementation Note: reading percpu statistics for memcg.
549  *
550  * Both of vmstat[] and percpu_counter has threshold and do periodic
551  * synchronization to implement "quick" read. There are trade-off between
552  * reading cost and precision of value. Then, we may have a chance to implement
553  * a periodic synchronization of counter in memcg's counter.
554  *
555  * But this _read() function is used for user interface now. The user accounts
556  * memory usage by memory cgroup and he _always_ requires exact value because
557  * he accounts memory. Even if we provide quick-and-fuzzy read, we always
558  * have to visit all online cpus and make sum. So, for now, unnecessary
559  * synchronization is not implemented. (just implemented for cpu hotplug)
560  *
561  * If there are kernel internal actions which can make use of some not-exact
562  * value, and reading all cpu value can be performance bottleneck in some
563  * common workload, threshold and synchronization as vmstat[] should be
564  * implemented.
565  *
566  * The parameter idx can be of type enum memcg_event_item or vm_event_item.
567  */
568 
memcg_sum_events(struct mem_cgroup * memcg,int event)569 static unsigned long memcg_sum_events(struct mem_cgroup *memcg,
570 				      int event)
571 {
572 	unsigned long val = 0;
573 	int cpu;
574 
575 	for_each_possible_cpu(cpu)
576 		val += per_cpu(memcg->stat->events[event], cpu);
577 	return val;
578 }
579 
mem_cgroup_charge_statistics(struct mem_cgroup * memcg,struct page * page,bool compound,int nr_pages)580 static void mem_cgroup_charge_statistics(struct mem_cgroup *memcg,
581 					 struct page *page,
582 					 bool compound, int nr_pages)
583 {
584 	/*
585 	 * Here, RSS means 'mapped anon' and anon's SwapCache. Shmem/tmpfs is
586 	 * counted as CACHE even if it's on ANON LRU.
587 	 */
588 	if (PageAnon(page))
589 		__this_cpu_add(memcg->stat->count[MEMCG_RSS], nr_pages);
590 	else {
591 		__this_cpu_add(memcg->stat->count[MEMCG_CACHE], nr_pages);
592 		if (PageSwapBacked(page))
593 			__this_cpu_add(memcg->stat->count[NR_SHMEM], nr_pages);
594 	}
595 
596 	if (compound) {
597 		VM_BUG_ON_PAGE(!PageTransHuge(page), page);
598 		__this_cpu_add(memcg->stat->count[MEMCG_RSS_HUGE], nr_pages);
599 	}
600 
601 	/* pagein of a big page is an event. So, ignore page size */
602 	if (nr_pages > 0)
603 		__this_cpu_inc(memcg->stat->events[PGPGIN]);
604 	else {
605 		__this_cpu_inc(memcg->stat->events[PGPGOUT]);
606 		nr_pages = -nr_pages; /* for event */
607 	}
608 
609 	__this_cpu_add(memcg->stat->nr_page_events, nr_pages);
610 }
611 
mem_cgroup_node_nr_lru_pages(struct mem_cgroup * memcg,int nid,unsigned int lru_mask)612 unsigned long mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
613 					   int nid, unsigned int lru_mask)
614 {
615 	struct lruvec *lruvec = mem_cgroup_lruvec(NODE_DATA(nid), memcg);
616 	unsigned long nr = 0;
617 	enum lru_list lru;
618 
619 	VM_BUG_ON((unsigned)nid >= nr_node_ids);
620 
621 	for_each_lru(lru) {
622 		if (!(BIT(lru) & lru_mask))
623 			continue;
624 		nr += mem_cgroup_get_lru_size(lruvec, lru);
625 	}
626 	return nr;
627 }
628 
mem_cgroup_nr_lru_pages(struct mem_cgroup * memcg,unsigned int lru_mask)629 static unsigned long mem_cgroup_nr_lru_pages(struct mem_cgroup *memcg,
630 			unsigned int lru_mask)
631 {
632 	unsigned long nr = 0;
633 	int nid;
634 
635 	for_each_node_state(nid, N_MEMORY)
636 		nr += mem_cgroup_node_nr_lru_pages(memcg, nid, lru_mask);
637 	return nr;
638 }
639 
mem_cgroup_event_ratelimit(struct mem_cgroup * memcg,enum mem_cgroup_events_target target)640 static bool mem_cgroup_event_ratelimit(struct mem_cgroup *memcg,
641 				       enum mem_cgroup_events_target target)
642 {
643 	unsigned long val, next;
644 
645 	val = __this_cpu_read(memcg->stat->nr_page_events);
646 	next = __this_cpu_read(memcg->stat->targets[target]);
647 	/* from time_after() in jiffies.h */
648 	if ((long)(next - val) < 0) {
649 		switch (target) {
650 		case MEM_CGROUP_TARGET_THRESH:
651 			next = val + THRESHOLDS_EVENTS_TARGET;
652 			break;
653 		case MEM_CGROUP_TARGET_SOFTLIMIT:
654 			next = val + SOFTLIMIT_EVENTS_TARGET;
655 			break;
656 		case MEM_CGROUP_TARGET_NUMAINFO:
657 			next = val + NUMAINFO_EVENTS_TARGET;
658 			break;
659 		default:
660 			break;
661 		}
662 		__this_cpu_write(memcg->stat->targets[target], next);
663 		return true;
664 	}
665 	return false;
666 }
667 
668 /*
669  * Check events in order.
670  *
671  */
memcg_check_events(struct mem_cgroup * memcg,struct page * page)672 static void memcg_check_events(struct mem_cgroup *memcg, struct page *page)
673 {
674 	/* threshold event is triggered in finer grain than soft limit */
675 	if (unlikely(mem_cgroup_event_ratelimit(memcg,
676 						MEM_CGROUP_TARGET_THRESH))) {
677 		bool do_softlimit;
678 		bool do_numainfo __maybe_unused;
679 
680 		do_softlimit = mem_cgroup_event_ratelimit(memcg,
681 						MEM_CGROUP_TARGET_SOFTLIMIT);
682 #if MAX_NUMNODES > 1
683 		do_numainfo = mem_cgroup_event_ratelimit(memcg,
684 						MEM_CGROUP_TARGET_NUMAINFO);
685 #endif
686 		mem_cgroup_threshold(memcg);
687 		if (unlikely(do_softlimit))
688 			mem_cgroup_update_tree(memcg, page);
689 #if MAX_NUMNODES > 1
690 		if (unlikely(do_numainfo))
691 			atomic_inc(&memcg->numainfo_events);
692 #endif
693 	}
694 }
695 
mem_cgroup_from_task(struct task_struct * p)696 struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)
697 {
698 	/*
699 	 * mm_update_next_owner() may clear mm->owner to NULL
700 	 * if it races with swapoff, page migration, etc.
701 	 * So this can be called with p == NULL.
702 	 */
703 	if (unlikely(!p))
704 		return NULL;
705 
706 	return mem_cgroup_from_css(task_css(p, memory_cgrp_id));
707 }
708 EXPORT_SYMBOL(mem_cgroup_from_task);
709 
get_mem_cgroup_from_mm(struct mm_struct * mm)710 static struct mem_cgroup *get_mem_cgroup_from_mm(struct mm_struct *mm)
711 {
712 	struct mem_cgroup *memcg = NULL;
713 
714 	rcu_read_lock();
715 	do {
716 		/*
717 		 * Page cache insertions can happen withou an
718 		 * actual mm context, e.g. during disk probing
719 		 * on boot, loopback IO, acct() writes etc.
720 		 */
721 		if (unlikely(!mm))
722 			memcg = root_mem_cgroup;
723 		else {
724 			memcg = mem_cgroup_from_task(rcu_dereference(mm->owner));
725 			if (unlikely(!memcg))
726 				memcg = root_mem_cgroup;
727 		}
728 	} while (!css_tryget(&memcg->css));
729 	rcu_read_unlock();
730 	return memcg;
731 }
732 
733 /**
734  * mem_cgroup_iter - iterate over memory cgroup hierarchy
735  * @root: hierarchy root
736  * @prev: previously returned memcg, NULL on first invocation
737  * @reclaim: cookie for shared reclaim walks, NULL for full walks
738  *
739  * Returns references to children of the hierarchy below @root, or
740  * @root itself, or %NULL after a full round-trip.
741  *
742  * Caller must pass the return value in @prev on subsequent
743  * invocations for reference counting, or use mem_cgroup_iter_break()
744  * to cancel a hierarchy walk before the round-trip is complete.
745  *
746  * Reclaimers can specify a zone and a priority level in @reclaim to
747  * divide up the memcgs in the hierarchy among all concurrent
748  * reclaimers operating on the same zone and priority.
749  */
mem_cgroup_iter(struct mem_cgroup * root,struct mem_cgroup * prev,struct mem_cgroup_reclaim_cookie * reclaim)750 struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root,
751 				   struct mem_cgroup *prev,
752 				   struct mem_cgroup_reclaim_cookie *reclaim)
753 {
754 	struct mem_cgroup_reclaim_iter *uninitialized_var(iter);
755 	struct cgroup_subsys_state *css = NULL;
756 	struct mem_cgroup *memcg = NULL;
757 	struct mem_cgroup *pos = NULL;
758 
759 	if (mem_cgroup_disabled())
760 		return NULL;
761 
762 	if (!root)
763 		root = root_mem_cgroup;
764 
765 	if (prev && !reclaim)
766 		pos = prev;
767 
768 	if (!root->use_hierarchy && root != root_mem_cgroup) {
769 		if (prev)
770 			goto out;
771 		return root;
772 	}
773 
774 	rcu_read_lock();
775 
776 	if (reclaim) {
777 		struct mem_cgroup_per_node *mz;
778 
779 		mz = mem_cgroup_nodeinfo(root, reclaim->pgdat->node_id);
780 		iter = &mz->iter[reclaim->priority];
781 
782 		if (prev && reclaim->generation != iter->generation)
783 			goto out_unlock;
784 
785 		while (1) {
786 			pos = READ_ONCE(iter->position);
787 			if (!pos || css_tryget(&pos->css))
788 				break;
789 			/*
790 			 * css reference reached zero, so iter->position will
791 			 * be cleared by ->css_released. However, we should not
792 			 * rely on this happening soon, because ->css_released
793 			 * is called from a work queue, and by busy-waiting we
794 			 * might block it. So we clear iter->position right
795 			 * away.
796 			 */
797 			(void)cmpxchg(&iter->position, pos, NULL);
798 		}
799 	}
800 
801 	if (pos)
802 		css = &pos->css;
803 
804 	for (;;) {
805 		css = css_next_descendant_pre(css, &root->css);
806 		if (!css) {
807 			/*
808 			 * Reclaimers share the hierarchy walk, and a
809 			 * new one might jump in right at the end of
810 			 * the hierarchy - make sure they see at least
811 			 * one group and restart from the beginning.
812 			 */
813 			if (!prev)
814 				continue;
815 			break;
816 		}
817 
818 		/*
819 		 * Verify the css and acquire a reference.  The root
820 		 * is provided by the caller, so we know it's alive
821 		 * and kicking, and don't take an extra reference.
822 		 */
823 		memcg = mem_cgroup_from_css(css);
824 
825 		if (css == &root->css)
826 			break;
827 
828 		if (css_tryget(css))
829 			break;
830 
831 		memcg = NULL;
832 	}
833 
834 	if (reclaim) {
835 		/*
836 		 * The position could have already been updated by a competing
837 		 * thread, so check that the value hasn't changed since we read
838 		 * it to avoid reclaiming from the same cgroup twice.
839 		 */
840 		(void)cmpxchg(&iter->position, pos, memcg);
841 
842 		if (pos)
843 			css_put(&pos->css);
844 
845 		if (!memcg)
846 			iter->generation++;
847 		else if (!prev)
848 			reclaim->generation = iter->generation;
849 	}
850 
851 out_unlock:
852 	rcu_read_unlock();
853 out:
854 	if (prev && prev != root)
855 		css_put(&prev->css);
856 
857 	return memcg;
858 }
859 
860 /**
861  * mem_cgroup_iter_break - abort a hierarchy walk prematurely
862  * @root: hierarchy root
863  * @prev: last visited hierarchy member as returned by mem_cgroup_iter()
864  */
mem_cgroup_iter_break(struct mem_cgroup * root,struct mem_cgroup * prev)865 void mem_cgroup_iter_break(struct mem_cgroup *root,
866 			   struct mem_cgroup *prev)
867 {
868 	if (!root)
869 		root = root_mem_cgroup;
870 	if (prev && prev != root)
871 		css_put(&prev->css);
872 }
873 
__invalidate_reclaim_iterators(struct mem_cgroup * from,struct mem_cgroup * dead_memcg)874 static void __invalidate_reclaim_iterators(struct mem_cgroup *from,
875 					struct mem_cgroup *dead_memcg)
876 {
877 	struct mem_cgroup_reclaim_iter *iter;
878 	struct mem_cgroup_per_node *mz;
879 	int nid;
880 	int i;
881 
882 	for_each_node(nid) {
883 		mz = mem_cgroup_nodeinfo(from, nid);
884 		for (i = 0; i <= DEF_PRIORITY; i++) {
885 			iter = &mz->iter[i];
886 			cmpxchg(&iter->position,
887 				dead_memcg, NULL);
888 		}
889 	}
890 }
891 
invalidate_reclaim_iterators(struct mem_cgroup * dead_memcg)892 static void invalidate_reclaim_iterators(struct mem_cgroup *dead_memcg)
893 {
894 	struct mem_cgroup *memcg = dead_memcg;
895 	struct mem_cgroup *last;
896 
897 	do {
898 		__invalidate_reclaim_iterators(memcg, dead_memcg);
899 		last = memcg;
900 	} while ((memcg = parent_mem_cgroup(memcg)));
901 
902 	/*
903 	 * When cgruop1 non-hierarchy mode is used,
904 	 * parent_mem_cgroup() does not walk all the way up to the
905 	 * cgroup root (root_mem_cgroup). So we have to handle
906 	 * dead_memcg from cgroup root separately.
907 	 */
908 	if (last != root_mem_cgroup)
909 		__invalidate_reclaim_iterators(root_mem_cgroup,
910 						dead_memcg);
911 }
912 
913 /*
914  * Iteration constructs for visiting all cgroups (under a tree).  If
915  * loops are exited prematurely (break), mem_cgroup_iter_break() must
916  * be used for reference counting.
917  */
918 #define for_each_mem_cgroup_tree(iter, root)		\
919 	for (iter = mem_cgroup_iter(root, NULL, NULL);	\
920 	     iter != NULL;				\
921 	     iter = mem_cgroup_iter(root, iter, NULL))
922 
923 #define for_each_mem_cgroup(iter)			\
924 	for (iter = mem_cgroup_iter(NULL, NULL, NULL);	\
925 	     iter != NULL;				\
926 	     iter = mem_cgroup_iter(NULL, iter, NULL))
927 
928 /**
929  * mem_cgroup_scan_tasks - iterate over tasks of a memory cgroup hierarchy
930  * @memcg: hierarchy root
931  * @fn: function to call for each task
932  * @arg: argument passed to @fn
933  *
934  * This function iterates over tasks attached to @memcg or to any of its
935  * descendants and calls @fn for each task. If @fn returns a non-zero
936  * value, the function breaks the iteration loop and returns the value.
937  * Otherwise, it will iterate over all tasks and return 0.
938  *
939  * This function must not be called for the root memory cgroup.
940  */
mem_cgroup_scan_tasks(struct mem_cgroup * memcg,int (* fn)(struct task_struct *,void *),void * arg)941 int mem_cgroup_scan_tasks(struct mem_cgroup *memcg,
942 			  int (*fn)(struct task_struct *, void *), void *arg)
943 {
944 	struct mem_cgroup *iter;
945 	int ret = 0;
946 
947 	BUG_ON(memcg == root_mem_cgroup);
948 
949 	for_each_mem_cgroup_tree(iter, memcg) {
950 		struct css_task_iter it;
951 		struct task_struct *task;
952 
953 		css_task_iter_start(&iter->css, 0, &it);
954 		while (!ret && (task = css_task_iter_next(&it)))
955 			ret = fn(task, arg);
956 		css_task_iter_end(&it);
957 		if (ret) {
958 			mem_cgroup_iter_break(memcg, iter);
959 			break;
960 		}
961 	}
962 	return ret;
963 }
964 
965 /**
966  * mem_cgroup_page_lruvec - return lruvec for isolating/putting an LRU page
967  * @page: the page
968  * @zone: zone of the page
969  *
970  * This function is only safe when following the LRU page isolation
971  * and putback protocol: the LRU lock must be held, and the page must
972  * either be PageLRU() or the caller must have isolated/allocated it.
973  */
mem_cgroup_page_lruvec(struct page * page,struct pglist_data * pgdat)974 struct lruvec *mem_cgroup_page_lruvec(struct page *page, struct pglist_data *pgdat)
975 {
976 	struct mem_cgroup_per_node *mz;
977 	struct mem_cgroup *memcg;
978 	struct lruvec *lruvec;
979 
980 	if (mem_cgroup_disabled()) {
981 		lruvec = &pgdat->lruvec;
982 		goto out;
983 	}
984 
985 	memcg = page->mem_cgroup;
986 	/*
987 	 * Swapcache readahead pages are added to the LRU - and
988 	 * possibly migrated - before they are charged.
989 	 */
990 	if (!memcg)
991 		memcg = root_mem_cgroup;
992 
993 	mz = mem_cgroup_page_nodeinfo(memcg, page);
994 	lruvec = &mz->lruvec;
995 out:
996 	/*
997 	 * Since a node can be onlined after the mem_cgroup was created,
998 	 * we have to be prepared to initialize lruvec->zone here;
999 	 * and if offlined then reonlined, we need to reinitialize it.
1000 	 */
1001 	if (unlikely(lruvec->pgdat != pgdat))
1002 		lruvec->pgdat = pgdat;
1003 	return lruvec;
1004 }
1005 
1006 /**
1007  * mem_cgroup_update_lru_size - account for adding or removing an lru page
1008  * @lruvec: mem_cgroup per zone lru vector
1009  * @lru: index of lru list the page is sitting on
1010  * @zid: zone id of the accounted pages
1011  * @nr_pages: positive when adding or negative when removing
1012  *
1013  * This function must be called under lru_lock, just before a page is added
1014  * to or just after a page is removed from an lru list (that ordering being
1015  * so as to allow it to check that lru_size 0 is consistent with list_empty).
1016  */
mem_cgroup_update_lru_size(struct lruvec * lruvec,enum lru_list lru,int zid,int nr_pages)1017 void mem_cgroup_update_lru_size(struct lruvec *lruvec, enum lru_list lru,
1018 				int zid, int nr_pages)
1019 {
1020 	struct mem_cgroup_per_node *mz;
1021 	unsigned long *lru_size;
1022 	long size;
1023 
1024 	if (mem_cgroup_disabled())
1025 		return;
1026 
1027 	mz = container_of(lruvec, struct mem_cgroup_per_node, lruvec);
1028 	lru_size = &mz->lru_zone_size[zid][lru];
1029 
1030 	if (nr_pages < 0)
1031 		*lru_size += nr_pages;
1032 
1033 	size = *lru_size;
1034 	if (WARN_ONCE(size < 0,
1035 		"%s(%p, %d, %d): lru_size %ld\n",
1036 		__func__, lruvec, lru, nr_pages, size)) {
1037 		VM_BUG_ON(1);
1038 		*lru_size = 0;
1039 	}
1040 
1041 	if (nr_pages > 0)
1042 		*lru_size += nr_pages;
1043 }
1044 
task_in_mem_cgroup(struct task_struct * task,struct mem_cgroup * memcg)1045 bool task_in_mem_cgroup(struct task_struct *task, struct mem_cgroup *memcg)
1046 {
1047 	struct mem_cgroup *task_memcg;
1048 	struct task_struct *p;
1049 	bool ret;
1050 
1051 	p = find_lock_task_mm(task);
1052 	if (p) {
1053 		task_memcg = get_mem_cgroup_from_mm(p->mm);
1054 		task_unlock(p);
1055 	} else {
1056 		/*
1057 		 * All threads may have already detached their mm's, but the oom
1058 		 * killer still needs to detect if they have already been oom
1059 		 * killed to prevent needlessly killing additional tasks.
1060 		 */
1061 		rcu_read_lock();
1062 		task_memcg = mem_cgroup_from_task(task);
1063 		css_get(&task_memcg->css);
1064 		rcu_read_unlock();
1065 	}
1066 	ret = mem_cgroup_is_descendant(task_memcg, memcg);
1067 	css_put(&task_memcg->css);
1068 	return ret;
1069 }
1070 
1071 /**
1072  * mem_cgroup_margin - calculate chargeable space of a memory cgroup
1073  * @memcg: the memory cgroup
1074  *
1075  * Returns the maximum amount of memory @mem can be charged with, in
1076  * pages.
1077  */
mem_cgroup_margin(struct mem_cgroup * memcg)1078 static unsigned long mem_cgroup_margin(struct mem_cgroup *memcg)
1079 {
1080 	unsigned long margin = 0;
1081 	unsigned long count;
1082 	unsigned long limit;
1083 
1084 	count = page_counter_read(&memcg->memory);
1085 	limit = READ_ONCE(memcg->memory.limit);
1086 	if (count < limit)
1087 		margin = limit - count;
1088 
1089 	if (do_memsw_account()) {
1090 		count = page_counter_read(&memcg->memsw);
1091 		limit = READ_ONCE(memcg->memsw.limit);
1092 		if (count <= limit)
1093 			margin = min(margin, limit - count);
1094 		else
1095 			margin = 0;
1096 	}
1097 
1098 	return margin;
1099 }
1100 
1101 /*
1102  * A routine for checking "mem" is under move_account() or not.
1103  *
1104  * Checking a cgroup is mc.from or mc.to or under hierarchy of
1105  * moving cgroups. This is for waiting at high-memory pressure
1106  * caused by "move".
1107  */
mem_cgroup_under_move(struct mem_cgroup * memcg)1108 static bool mem_cgroup_under_move(struct mem_cgroup *memcg)
1109 {
1110 	struct mem_cgroup *from;
1111 	struct mem_cgroup *to;
1112 	bool ret = false;
1113 	/*
1114 	 * Unlike task_move routines, we access mc.to, mc.from not under
1115 	 * mutual exclusion by cgroup_mutex. Here, we take spinlock instead.
1116 	 */
1117 	spin_lock(&mc.lock);
1118 	from = mc.from;
1119 	to = mc.to;
1120 	if (!from)
1121 		goto unlock;
1122 
1123 	ret = mem_cgroup_is_descendant(from, memcg) ||
1124 		mem_cgroup_is_descendant(to, memcg);
1125 unlock:
1126 	spin_unlock(&mc.lock);
1127 	return ret;
1128 }
1129 
mem_cgroup_wait_acct_move(struct mem_cgroup * memcg)1130 static bool mem_cgroup_wait_acct_move(struct mem_cgroup *memcg)
1131 {
1132 	if (mc.moving_task && current != mc.moving_task) {
1133 		if (mem_cgroup_under_move(memcg)) {
1134 			DEFINE_WAIT(wait);
1135 			prepare_to_wait(&mc.waitq, &wait, TASK_INTERRUPTIBLE);
1136 			/* moving charge context might have finished. */
1137 			if (mc.moving_task)
1138 				schedule();
1139 			finish_wait(&mc.waitq, &wait);
1140 			return true;
1141 		}
1142 	}
1143 	return false;
1144 }
1145 
1146 unsigned int memcg1_stats[] = {
1147 	MEMCG_CACHE,
1148 	MEMCG_RSS,
1149 	MEMCG_RSS_HUGE,
1150 	NR_SHMEM,
1151 	NR_FILE_MAPPED,
1152 	NR_FILE_DIRTY,
1153 	NR_WRITEBACK,
1154 	MEMCG_SWAP,
1155 };
1156 
1157 static const char *const memcg1_stat_names[] = {
1158 	"cache",
1159 	"rss",
1160 	"rss_huge",
1161 	"shmem",
1162 	"mapped_file",
1163 	"dirty",
1164 	"writeback",
1165 	"swap",
1166 };
1167 
1168 #define K(x) ((x) << (PAGE_SHIFT-10))
1169 /**
1170  * mem_cgroup_print_oom_info: Print OOM information relevant to memory controller.
1171  * @memcg: The memory cgroup that went over limit
1172  * @p: Task that is going to be killed
1173  *
1174  * NOTE: @memcg and @p's mem_cgroup can be different when hierarchy is
1175  * enabled
1176  */
mem_cgroup_print_oom_info(struct mem_cgroup * memcg,struct task_struct * p)1177 void mem_cgroup_print_oom_info(struct mem_cgroup *memcg, struct task_struct *p)
1178 {
1179 	struct mem_cgroup *iter;
1180 	unsigned int i;
1181 
1182 	rcu_read_lock();
1183 
1184 	if (p) {
1185 		pr_info("Task in ");
1186 		pr_cont_cgroup_path(task_cgroup(p, memory_cgrp_id));
1187 		pr_cont(" killed as a result of limit of ");
1188 	} else {
1189 		pr_info("Memory limit reached of cgroup ");
1190 	}
1191 
1192 	pr_cont_cgroup_path(memcg->css.cgroup);
1193 	pr_cont("\n");
1194 
1195 	rcu_read_unlock();
1196 
1197 	pr_info("memory: usage %llukB, limit %llukB, failcnt %lu\n",
1198 		K((u64)page_counter_read(&memcg->memory)),
1199 		K((u64)memcg->memory.limit), memcg->memory.failcnt);
1200 	pr_info("memory+swap: usage %llukB, limit %llukB, failcnt %lu\n",
1201 		K((u64)page_counter_read(&memcg->memsw)),
1202 		K((u64)memcg->memsw.limit), memcg->memsw.failcnt);
1203 	pr_info("kmem: usage %llukB, limit %llukB, failcnt %lu\n",
1204 		K((u64)page_counter_read(&memcg->kmem)),
1205 		K((u64)memcg->kmem.limit), memcg->kmem.failcnt);
1206 
1207 	for_each_mem_cgroup_tree(iter, memcg) {
1208 		pr_info("Memory cgroup stats for ");
1209 		pr_cont_cgroup_path(iter->css.cgroup);
1210 		pr_cont(":");
1211 
1212 		for (i = 0; i < ARRAY_SIZE(memcg1_stats); i++) {
1213 			if (memcg1_stats[i] == MEMCG_SWAP && !do_swap_account)
1214 				continue;
1215 			pr_cont(" %s:%luKB", memcg1_stat_names[i],
1216 				K(memcg_page_state(iter, memcg1_stats[i])));
1217 		}
1218 
1219 		for (i = 0; i < NR_LRU_LISTS; i++)
1220 			pr_cont(" %s:%luKB", mem_cgroup_lru_names[i],
1221 				K(mem_cgroup_nr_lru_pages(iter, BIT(i))));
1222 
1223 		pr_cont("\n");
1224 	}
1225 }
1226 
1227 /*
1228  * This function returns the number of memcg under hierarchy tree. Returns
1229  * 1(self count) if no children.
1230  */
mem_cgroup_count_children(struct mem_cgroup * memcg)1231 static int mem_cgroup_count_children(struct mem_cgroup *memcg)
1232 {
1233 	int num = 0;
1234 	struct mem_cgroup *iter;
1235 
1236 	for_each_mem_cgroup_tree(iter, memcg)
1237 		num++;
1238 	return num;
1239 }
1240 
1241 /*
1242  * Return the memory (and swap, if configured) limit for a memcg.
1243  */
mem_cgroup_get_limit(struct mem_cgroup * memcg)1244 unsigned long mem_cgroup_get_limit(struct mem_cgroup *memcg)
1245 {
1246 	unsigned long limit;
1247 
1248 	limit = memcg->memory.limit;
1249 	if (mem_cgroup_swappiness(memcg)) {
1250 		unsigned long memsw_limit;
1251 		unsigned long swap_limit;
1252 
1253 		memsw_limit = memcg->memsw.limit;
1254 		swap_limit = memcg->swap.limit;
1255 		swap_limit = min(swap_limit, (unsigned long)total_swap_pages);
1256 		limit = min(limit + swap_limit, memsw_limit);
1257 	}
1258 	return limit;
1259 }
1260 
mem_cgroup_out_of_memory(struct mem_cgroup * memcg,gfp_t gfp_mask,int order)1261 static bool mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
1262 				     int order)
1263 {
1264 	struct oom_control oc = {
1265 		.zonelist = NULL,
1266 		.nodemask = NULL,
1267 		.memcg = memcg,
1268 		.gfp_mask = gfp_mask,
1269 		.order = order,
1270 	};
1271 	bool ret;
1272 
1273 	mutex_lock(&oom_lock);
1274 	ret = out_of_memory(&oc);
1275 	mutex_unlock(&oom_lock);
1276 	return ret;
1277 }
1278 
1279 #if MAX_NUMNODES > 1
1280 
1281 /**
1282  * test_mem_cgroup_node_reclaimable
1283  * @memcg: the target memcg
1284  * @nid: the node ID to be checked.
1285  * @noswap : specify true here if the user wants flle only information.
1286  *
1287  * This function returns whether the specified memcg contains any
1288  * reclaimable pages on a node. Returns true if there are any reclaimable
1289  * pages in the node.
1290  */
test_mem_cgroup_node_reclaimable(struct mem_cgroup * memcg,int nid,bool noswap)1291 static bool test_mem_cgroup_node_reclaimable(struct mem_cgroup *memcg,
1292 		int nid, bool noswap)
1293 {
1294 	if (mem_cgroup_node_nr_lru_pages(memcg, nid, LRU_ALL_FILE))
1295 		return true;
1296 	if (noswap || !total_swap_pages)
1297 		return false;
1298 	if (mem_cgroup_node_nr_lru_pages(memcg, nid, LRU_ALL_ANON))
1299 		return true;
1300 	return false;
1301 
1302 }
1303 
1304 /*
1305  * Always updating the nodemask is not very good - even if we have an empty
1306  * list or the wrong list here, we can start from some node and traverse all
1307  * nodes based on the zonelist. So update the list loosely once per 10 secs.
1308  *
1309  */
mem_cgroup_may_update_nodemask(struct mem_cgroup * memcg)1310 static void mem_cgroup_may_update_nodemask(struct mem_cgroup *memcg)
1311 {
1312 	int nid;
1313 	/*
1314 	 * numainfo_events > 0 means there was at least NUMAINFO_EVENTS_TARGET
1315 	 * pagein/pageout changes since the last update.
1316 	 */
1317 	if (!atomic_read(&memcg->numainfo_events))
1318 		return;
1319 	if (atomic_inc_return(&memcg->numainfo_updating) > 1)
1320 		return;
1321 
1322 	/* make a nodemask where this memcg uses memory from */
1323 	memcg->scan_nodes = node_states[N_MEMORY];
1324 
1325 	for_each_node_mask(nid, node_states[N_MEMORY]) {
1326 
1327 		if (!test_mem_cgroup_node_reclaimable(memcg, nid, false))
1328 			node_clear(nid, memcg->scan_nodes);
1329 	}
1330 
1331 	atomic_set(&memcg->numainfo_events, 0);
1332 	atomic_set(&memcg->numainfo_updating, 0);
1333 }
1334 
1335 /*
1336  * Selecting a node where we start reclaim from. Because what we need is just
1337  * reducing usage counter, start from anywhere is O,K. Considering
1338  * memory reclaim from current node, there are pros. and cons.
1339  *
1340  * Freeing memory from current node means freeing memory from a node which
1341  * we'll use or we've used. So, it may make LRU bad. And if several threads
1342  * hit limits, it will see a contention on a node. But freeing from remote
1343  * node means more costs for memory reclaim because of memory latency.
1344  *
1345  * Now, we use round-robin. Better algorithm is welcomed.
1346  */
mem_cgroup_select_victim_node(struct mem_cgroup * memcg)1347 int mem_cgroup_select_victim_node(struct mem_cgroup *memcg)
1348 {
1349 	int node;
1350 
1351 	mem_cgroup_may_update_nodemask(memcg);
1352 	node = memcg->last_scanned_node;
1353 
1354 	node = next_node_in(node, memcg->scan_nodes);
1355 	/*
1356 	 * mem_cgroup_may_update_nodemask might have seen no reclaimmable pages
1357 	 * last time it really checked all the LRUs due to rate limiting.
1358 	 * Fallback to the current node in that case for simplicity.
1359 	 */
1360 	if (unlikely(node == MAX_NUMNODES))
1361 		node = numa_node_id();
1362 
1363 	memcg->last_scanned_node = node;
1364 	return node;
1365 }
1366 #else
mem_cgroup_select_victim_node(struct mem_cgroup * memcg)1367 int mem_cgroup_select_victim_node(struct mem_cgroup *memcg)
1368 {
1369 	return 0;
1370 }
1371 #endif
1372 
mem_cgroup_soft_reclaim(struct mem_cgroup * root_memcg,pg_data_t * pgdat,gfp_t gfp_mask,unsigned long * total_scanned)1373 static int mem_cgroup_soft_reclaim(struct mem_cgroup *root_memcg,
1374 				   pg_data_t *pgdat,
1375 				   gfp_t gfp_mask,
1376 				   unsigned long *total_scanned)
1377 {
1378 	struct mem_cgroup *victim = NULL;
1379 	int total = 0;
1380 	int loop = 0;
1381 	unsigned long excess;
1382 	unsigned long nr_scanned;
1383 	struct mem_cgroup_reclaim_cookie reclaim = {
1384 		.pgdat = pgdat,
1385 		.priority = 0,
1386 	};
1387 
1388 	excess = soft_limit_excess(root_memcg);
1389 
1390 	while (1) {
1391 		victim = mem_cgroup_iter(root_memcg, victim, &reclaim);
1392 		if (!victim) {
1393 			loop++;
1394 			if (loop >= 2) {
1395 				/*
1396 				 * If we have not been able to reclaim
1397 				 * anything, it might because there are
1398 				 * no reclaimable pages under this hierarchy
1399 				 */
1400 				if (!total)
1401 					break;
1402 				/*
1403 				 * We want to do more targeted reclaim.
1404 				 * excess >> 2 is not to excessive so as to
1405 				 * reclaim too much, nor too less that we keep
1406 				 * coming back to reclaim from this cgroup
1407 				 */
1408 				if (total >= (excess >> 2) ||
1409 					(loop > MEM_CGROUP_MAX_RECLAIM_LOOPS))
1410 					break;
1411 			}
1412 			continue;
1413 		}
1414 		total += mem_cgroup_shrink_node(victim, gfp_mask, false,
1415 					pgdat, &nr_scanned);
1416 		*total_scanned += nr_scanned;
1417 		if (!soft_limit_excess(root_memcg))
1418 			break;
1419 	}
1420 	mem_cgroup_iter_break(root_memcg, victim);
1421 	return total;
1422 }
1423 
1424 #ifdef CONFIG_LOCKDEP
1425 static struct lockdep_map memcg_oom_lock_dep_map = {
1426 	.name = "memcg_oom_lock",
1427 };
1428 #endif
1429 
1430 static DEFINE_SPINLOCK(memcg_oom_lock);
1431 
1432 /*
1433  * Check OOM-Killer is already running under our hierarchy.
1434  * If someone is running, return false.
1435  */
mem_cgroup_oom_trylock(struct mem_cgroup * memcg)1436 static bool mem_cgroup_oom_trylock(struct mem_cgroup *memcg)
1437 {
1438 	struct mem_cgroup *iter, *failed = NULL;
1439 
1440 	spin_lock(&memcg_oom_lock);
1441 
1442 	for_each_mem_cgroup_tree(iter, memcg) {
1443 		if (iter->oom_lock) {
1444 			/*
1445 			 * this subtree of our hierarchy is already locked
1446 			 * so we cannot give a lock.
1447 			 */
1448 			failed = iter;
1449 			mem_cgroup_iter_break(memcg, iter);
1450 			break;
1451 		} else
1452 			iter->oom_lock = true;
1453 	}
1454 
1455 	if (failed) {
1456 		/*
1457 		 * OK, we failed to lock the whole subtree so we have
1458 		 * to clean up what we set up to the failing subtree
1459 		 */
1460 		for_each_mem_cgroup_tree(iter, memcg) {
1461 			if (iter == failed) {
1462 				mem_cgroup_iter_break(memcg, iter);
1463 				break;
1464 			}
1465 			iter->oom_lock = false;
1466 		}
1467 	} else
1468 		mutex_acquire(&memcg_oom_lock_dep_map, 0, 1, _RET_IP_);
1469 
1470 	spin_unlock(&memcg_oom_lock);
1471 
1472 	return !failed;
1473 }
1474 
mem_cgroup_oom_unlock(struct mem_cgroup * memcg)1475 static void mem_cgroup_oom_unlock(struct mem_cgroup *memcg)
1476 {
1477 	struct mem_cgroup *iter;
1478 
1479 	spin_lock(&memcg_oom_lock);
1480 	mutex_release(&memcg_oom_lock_dep_map, 1, _RET_IP_);
1481 	for_each_mem_cgroup_tree(iter, memcg)
1482 		iter->oom_lock = false;
1483 	spin_unlock(&memcg_oom_lock);
1484 }
1485 
mem_cgroup_mark_under_oom(struct mem_cgroup * memcg)1486 static void mem_cgroup_mark_under_oom(struct mem_cgroup *memcg)
1487 {
1488 	struct mem_cgroup *iter;
1489 
1490 	spin_lock(&memcg_oom_lock);
1491 	for_each_mem_cgroup_tree(iter, memcg)
1492 		iter->under_oom++;
1493 	spin_unlock(&memcg_oom_lock);
1494 }
1495 
mem_cgroup_unmark_under_oom(struct mem_cgroup * memcg)1496 static void mem_cgroup_unmark_under_oom(struct mem_cgroup *memcg)
1497 {
1498 	struct mem_cgroup *iter;
1499 
1500 	/*
1501 	 * When a new child is created while the hierarchy is under oom,
1502 	 * mem_cgroup_oom_lock() may not be called. Watch for underflow.
1503 	 */
1504 	spin_lock(&memcg_oom_lock);
1505 	for_each_mem_cgroup_tree(iter, memcg)
1506 		if (iter->under_oom > 0)
1507 			iter->under_oom--;
1508 	spin_unlock(&memcg_oom_lock);
1509 }
1510 
1511 static DECLARE_WAIT_QUEUE_HEAD(memcg_oom_waitq);
1512 
1513 struct oom_wait_info {
1514 	struct mem_cgroup *memcg;
1515 	wait_queue_entry_t	wait;
1516 };
1517 
memcg_oom_wake_function(wait_queue_entry_t * wait,unsigned mode,int sync,void * arg)1518 static int memcg_oom_wake_function(wait_queue_entry_t *wait,
1519 	unsigned mode, int sync, void *arg)
1520 {
1521 	struct mem_cgroup *wake_memcg = (struct mem_cgroup *)arg;
1522 	struct mem_cgroup *oom_wait_memcg;
1523 	struct oom_wait_info *oom_wait_info;
1524 
1525 	oom_wait_info = container_of(wait, struct oom_wait_info, wait);
1526 	oom_wait_memcg = oom_wait_info->memcg;
1527 
1528 	if (!mem_cgroup_is_descendant(wake_memcg, oom_wait_memcg) &&
1529 	    !mem_cgroup_is_descendant(oom_wait_memcg, wake_memcg))
1530 		return 0;
1531 	return autoremove_wake_function(wait, mode, sync, arg);
1532 }
1533 
memcg_oom_recover(struct mem_cgroup * memcg)1534 static void memcg_oom_recover(struct mem_cgroup *memcg)
1535 {
1536 	/*
1537 	 * For the following lockless ->under_oom test, the only required
1538 	 * guarantee is that it must see the state asserted by an OOM when
1539 	 * this function is called as a result of userland actions
1540 	 * triggered by the notification of the OOM.  This is trivially
1541 	 * achieved by invoking mem_cgroup_mark_under_oom() before
1542 	 * triggering notification.
1543 	 */
1544 	if (memcg && memcg->under_oom)
1545 		__wake_up(&memcg_oom_waitq, TASK_NORMAL, 0, memcg);
1546 }
1547 
mem_cgroup_oom(struct mem_cgroup * memcg,gfp_t mask,int order)1548 static void mem_cgroup_oom(struct mem_cgroup *memcg, gfp_t mask, int order)
1549 {
1550 	if (!current->memcg_may_oom)
1551 		return;
1552 	/*
1553 	 * We are in the middle of the charge context here, so we
1554 	 * don't want to block when potentially sitting on a callstack
1555 	 * that holds all kinds of filesystem and mm locks.
1556 	 *
1557 	 * Also, the caller may handle a failed allocation gracefully
1558 	 * (like optional page cache readahead) and so an OOM killer
1559 	 * invocation might not even be necessary.
1560 	 *
1561 	 * That's why we don't do anything here except remember the
1562 	 * OOM context and then deal with it at the end of the page
1563 	 * fault when the stack is unwound, the locks are released,
1564 	 * and when we know whether the fault was overall successful.
1565 	 */
1566 	css_get(&memcg->css);
1567 	current->memcg_in_oom = memcg;
1568 	current->memcg_oom_gfp_mask = mask;
1569 	current->memcg_oom_order = order;
1570 }
1571 
1572 /**
1573  * mem_cgroup_oom_synchronize - complete memcg OOM handling
1574  * @handle: actually kill/wait or just clean up the OOM state
1575  *
1576  * This has to be called at the end of a page fault if the memcg OOM
1577  * handler was enabled.
1578  *
1579  * Memcg supports userspace OOM handling where failed allocations must
1580  * sleep on a waitqueue until the userspace task resolves the
1581  * situation.  Sleeping directly in the charge context with all kinds
1582  * of locks held is not a good idea, instead we remember an OOM state
1583  * in the task and mem_cgroup_oom_synchronize() has to be called at
1584  * the end of the page fault to complete the OOM handling.
1585  *
1586  * Returns %true if an ongoing memcg OOM situation was detected and
1587  * completed, %false otherwise.
1588  */
mem_cgroup_oom_synchronize(bool handle)1589 bool mem_cgroup_oom_synchronize(bool handle)
1590 {
1591 	struct mem_cgroup *memcg = current->memcg_in_oom;
1592 	struct oom_wait_info owait;
1593 	bool locked;
1594 
1595 	/* OOM is global, do not handle */
1596 	if (!memcg)
1597 		return false;
1598 
1599 	if (!handle)
1600 		goto cleanup;
1601 
1602 	owait.memcg = memcg;
1603 	owait.wait.flags = 0;
1604 	owait.wait.func = memcg_oom_wake_function;
1605 	owait.wait.private = current;
1606 	INIT_LIST_HEAD(&owait.wait.entry);
1607 
1608 	prepare_to_wait(&memcg_oom_waitq, &owait.wait, TASK_KILLABLE);
1609 	mem_cgroup_mark_under_oom(memcg);
1610 
1611 	locked = mem_cgroup_oom_trylock(memcg);
1612 
1613 	if (locked)
1614 		mem_cgroup_oom_notify(memcg);
1615 
1616 	if (locked && !memcg->oom_kill_disable) {
1617 		mem_cgroup_unmark_under_oom(memcg);
1618 		finish_wait(&memcg_oom_waitq, &owait.wait);
1619 		mem_cgroup_out_of_memory(memcg, current->memcg_oom_gfp_mask,
1620 					 current->memcg_oom_order);
1621 	} else {
1622 		schedule();
1623 		mem_cgroup_unmark_under_oom(memcg);
1624 		finish_wait(&memcg_oom_waitq, &owait.wait);
1625 	}
1626 
1627 	if (locked) {
1628 		mem_cgroup_oom_unlock(memcg);
1629 		/*
1630 		 * There is no guarantee that an OOM-lock contender
1631 		 * sees the wakeups triggered by the OOM kill
1632 		 * uncharges.  Wake any sleepers explicitely.
1633 		 */
1634 		memcg_oom_recover(memcg);
1635 	}
1636 cleanup:
1637 	current->memcg_in_oom = NULL;
1638 	css_put(&memcg->css);
1639 	return true;
1640 }
1641 
1642 /**
1643  * lock_page_memcg - lock a page->mem_cgroup binding
1644  * @page: the page
1645  *
1646  * This function protects unlocked LRU pages from being moved to
1647  * another cgroup.
1648  *
1649  * It ensures lifetime of the returned memcg. Caller is responsible
1650  * for the lifetime of the page; __unlock_page_memcg() is available
1651  * when @page might get freed inside the locked section.
1652  */
lock_page_memcg(struct page * page)1653 struct mem_cgroup *lock_page_memcg(struct page *page)
1654 {
1655 	struct mem_cgroup *memcg;
1656 	unsigned long flags;
1657 
1658 	/*
1659 	 * The RCU lock is held throughout the transaction.  The fast
1660 	 * path can get away without acquiring the memcg->move_lock
1661 	 * because page moving starts with an RCU grace period.
1662 	 *
1663 	 * The RCU lock also protects the memcg from being freed when
1664 	 * the page state that is going to change is the only thing
1665 	 * preventing the page itself from being freed. E.g. writeback
1666 	 * doesn't hold a page reference and relies on PG_writeback to
1667 	 * keep off truncation, migration and so forth.
1668          */
1669 	rcu_read_lock();
1670 
1671 	if (mem_cgroup_disabled())
1672 		return NULL;
1673 again:
1674 	memcg = page->mem_cgroup;
1675 	if (unlikely(!memcg))
1676 		return NULL;
1677 
1678 	if (atomic_read(&memcg->moving_account) <= 0)
1679 		return memcg;
1680 
1681 	spin_lock_irqsave(&memcg->move_lock, flags);
1682 	if (memcg != page->mem_cgroup) {
1683 		spin_unlock_irqrestore(&memcg->move_lock, flags);
1684 		goto again;
1685 	}
1686 
1687 	/*
1688 	 * When charge migration first begins, we can have locked and
1689 	 * unlocked page stat updates happening concurrently.  Track
1690 	 * the task who has the lock for unlock_page_memcg().
1691 	 */
1692 	memcg->move_lock_task = current;
1693 	memcg->move_lock_flags = flags;
1694 
1695 	return memcg;
1696 }
1697 EXPORT_SYMBOL(lock_page_memcg);
1698 
1699 /**
1700  * __unlock_page_memcg - unlock and unpin a memcg
1701  * @memcg: the memcg
1702  *
1703  * Unlock and unpin a memcg returned by lock_page_memcg().
1704  */
__unlock_page_memcg(struct mem_cgroup * memcg)1705 void __unlock_page_memcg(struct mem_cgroup *memcg)
1706 {
1707 	if (memcg && memcg->move_lock_task == current) {
1708 		unsigned long flags = memcg->move_lock_flags;
1709 
1710 		memcg->move_lock_task = NULL;
1711 		memcg->move_lock_flags = 0;
1712 
1713 		spin_unlock_irqrestore(&memcg->move_lock, flags);
1714 	}
1715 
1716 	rcu_read_unlock();
1717 }
1718 
1719 /**
1720  * unlock_page_memcg - unlock a page->mem_cgroup binding
1721  * @page: the page
1722  */
unlock_page_memcg(struct page * page)1723 void unlock_page_memcg(struct page *page)
1724 {
1725 	__unlock_page_memcg(page->mem_cgroup);
1726 }
1727 EXPORT_SYMBOL(unlock_page_memcg);
1728 
1729 /*
1730  * size of first charge trial. "32" comes from vmscan.c's magic value.
1731  * TODO: maybe necessary to use big numbers in big irons.
1732  */
1733 #define CHARGE_BATCH	32U
1734 struct memcg_stock_pcp {
1735 	struct mem_cgroup *cached; /* this never be root cgroup */
1736 	unsigned int nr_pages;
1737 	struct work_struct work;
1738 	unsigned long flags;
1739 #define FLUSHING_CACHED_CHARGE	0
1740 };
1741 static DEFINE_PER_CPU(struct memcg_stock_pcp, memcg_stock);
1742 static DEFINE_MUTEX(percpu_charge_mutex);
1743 
1744 /**
1745  * consume_stock: Try to consume stocked charge on this cpu.
1746  * @memcg: memcg to consume from.
1747  * @nr_pages: how many pages to charge.
1748  *
1749  * The charges will only happen if @memcg matches the current cpu's memcg
1750  * stock, and at least @nr_pages are available in that stock.  Failure to
1751  * service an allocation will refill the stock.
1752  *
1753  * returns true if successful, false otherwise.
1754  */
consume_stock(struct mem_cgroup * memcg,unsigned int nr_pages)1755 static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages)
1756 {
1757 	struct memcg_stock_pcp *stock;
1758 	unsigned long flags;
1759 	bool ret = false;
1760 
1761 	if (nr_pages > CHARGE_BATCH)
1762 		return ret;
1763 
1764 	local_irq_save(flags);
1765 
1766 	stock = this_cpu_ptr(&memcg_stock);
1767 	if (memcg == stock->cached && stock->nr_pages >= nr_pages) {
1768 		stock->nr_pages -= nr_pages;
1769 		ret = true;
1770 	}
1771 
1772 	local_irq_restore(flags);
1773 
1774 	return ret;
1775 }
1776 
1777 /*
1778  * Returns stocks cached in percpu and reset cached information.
1779  */
drain_stock(struct memcg_stock_pcp * stock)1780 static void drain_stock(struct memcg_stock_pcp *stock)
1781 {
1782 	struct mem_cgroup *old = stock->cached;
1783 
1784 	if (stock->nr_pages) {
1785 		page_counter_uncharge(&old->memory, stock->nr_pages);
1786 		if (do_memsw_account())
1787 			page_counter_uncharge(&old->memsw, stock->nr_pages);
1788 		css_put_many(&old->css, stock->nr_pages);
1789 		stock->nr_pages = 0;
1790 	}
1791 	stock->cached = NULL;
1792 }
1793 
drain_local_stock(struct work_struct * dummy)1794 static void drain_local_stock(struct work_struct *dummy)
1795 {
1796 	struct memcg_stock_pcp *stock;
1797 	unsigned long flags;
1798 
1799 	/*
1800 	 * The only protection from memory hotplug vs. drain_stock races is
1801 	 * that we always operate on local CPU stock here with IRQ disabled
1802 	 */
1803 	local_irq_save(flags);
1804 
1805 	stock = this_cpu_ptr(&memcg_stock);
1806 	drain_stock(stock);
1807 	clear_bit(FLUSHING_CACHED_CHARGE, &stock->flags);
1808 
1809 	local_irq_restore(flags);
1810 }
1811 
1812 /*
1813  * Cache charges(val) to local per_cpu area.
1814  * This will be consumed by consume_stock() function, later.
1815  */
refill_stock(struct mem_cgroup * memcg,unsigned int nr_pages)1816 static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages)
1817 {
1818 	struct memcg_stock_pcp *stock;
1819 	unsigned long flags;
1820 
1821 	local_irq_save(flags);
1822 
1823 	stock = this_cpu_ptr(&memcg_stock);
1824 	if (stock->cached != memcg) { /* reset if necessary */
1825 		drain_stock(stock);
1826 		stock->cached = memcg;
1827 	}
1828 	stock->nr_pages += nr_pages;
1829 
1830 	if (stock->nr_pages > CHARGE_BATCH)
1831 		drain_stock(stock);
1832 
1833 	local_irq_restore(flags);
1834 }
1835 
1836 /*
1837  * Drains all per-CPU charge caches for given root_memcg resp. subtree
1838  * of the hierarchy under it.
1839  */
drain_all_stock(struct mem_cgroup * root_memcg)1840 static void drain_all_stock(struct mem_cgroup *root_memcg)
1841 {
1842 	int cpu, curcpu;
1843 
1844 	/* If someone's already draining, avoid adding running more workers. */
1845 	if (!mutex_trylock(&percpu_charge_mutex))
1846 		return;
1847 	/*
1848 	 * Notify other cpus that system-wide "drain" is running
1849 	 * We do not care about races with the cpu hotplug because cpu down
1850 	 * as well as workers from this path always operate on the local
1851 	 * per-cpu data. CPU up doesn't touch memcg_stock at all.
1852 	 */
1853 	curcpu = get_cpu();
1854 	for_each_online_cpu(cpu) {
1855 		struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu);
1856 		struct mem_cgroup *memcg;
1857 
1858 		memcg = stock->cached;
1859 		if (!memcg || !stock->nr_pages || !css_tryget(&memcg->css))
1860 			continue;
1861 		if (!mem_cgroup_is_descendant(memcg, root_memcg)) {
1862 			css_put(&memcg->css);
1863 			continue;
1864 		}
1865 		if (!test_and_set_bit(FLUSHING_CACHED_CHARGE, &stock->flags)) {
1866 			if (cpu == curcpu)
1867 				drain_local_stock(&stock->work);
1868 			else
1869 				schedule_work_on(cpu, &stock->work);
1870 		}
1871 		css_put(&memcg->css);
1872 	}
1873 	put_cpu();
1874 	mutex_unlock(&percpu_charge_mutex);
1875 }
1876 
memcg_hotplug_cpu_dead(unsigned int cpu)1877 static int memcg_hotplug_cpu_dead(unsigned int cpu)
1878 {
1879 	struct memcg_stock_pcp *stock;
1880 
1881 	stock = &per_cpu(memcg_stock, cpu);
1882 	drain_stock(stock);
1883 	return 0;
1884 }
1885 
reclaim_high(struct mem_cgroup * memcg,unsigned int nr_pages,gfp_t gfp_mask)1886 static void reclaim_high(struct mem_cgroup *memcg,
1887 			 unsigned int nr_pages,
1888 			 gfp_t gfp_mask)
1889 {
1890 	do {
1891 		if (page_counter_read(&memcg->memory) <= memcg->high)
1892 			continue;
1893 		mem_cgroup_event(memcg, MEMCG_HIGH);
1894 		try_to_free_mem_cgroup_pages(memcg, nr_pages, gfp_mask, true);
1895 	} while ((memcg = parent_mem_cgroup(memcg)));
1896 }
1897 
high_work_func(struct work_struct * work)1898 static void high_work_func(struct work_struct *work)
1899 {
1900 	struct mem_cgroup *memcg;
1901 
1902 	memcg = container_of(work, struct mem_cgroup, high_work);
1903 	reclaim_high(memcg, CHARGE_BATCH, GFP_KERNEL);
1904 }
1905 
1906 /*
1907  * Scheduled by try_charge() to be executed from the userland return path
1908  * and reclaims memory over the high limit.
1909  */
mem_cgroup_handle_over_high(void)1910 void mem_cgroup_handle_over_high(void)
1911 {
1912 	unsigned int nr_pages = current->memcg_nr_pages_over_high;
1913 	struct mem_cgroup *memcg;
1914 
1915 	if (likely(!nr_pages))
1916 		return;
1917 
1918 	memcg = get_mem_cgroup_from_mm(current->mm);
1919 	reclaim_high(memcg, nr_pages, GFP_KERNEL);
1920 	css_put(&memcg->css);
1921 	current->memcg_nr_pages_over_high = 0;
1922 }
1923 
try_charge(struct mem_cgroup * memcg,gfp_t gfp_mask,unsigned int nr_pages)1924 static int try_charge(struct mem_cgroup *memcg, gfp_t gfp_mask,
1925 		      unsigned int nr_pages)
1926 {
1927 	unsigned int batch = max(CHARGE_BATCH, nr_pages);
1928 	int nr_retries = MEM_CGROUP_RECLAIM_RETRIES;
1929 	struct mem_cgroup *mem_over_limit;
1930 	struct page_counter *counter;
1931 	unsigned long nr_reclaimed;
1932 	bool may_swap = true;
1933 	bool drained = false;
1934 
1935 	if (mem_cgroup_is_root(memcg))
1936 		return 0;
1937 retry:
1938 	if (consume_stock(memcg, nr_pages))
1939 		return 0;
1940 
1941 	if (!do_memsw_account() ||
1942 	    page_counter_try_charge(&memcg->memsw, batch, &counter)) {
1943 		if (page_counter_try_charge(&memcg->memory, batch, &counter))
1944 			goto done_restock;
1945 		if (do_memsw_account())
1946 			page_counter_uncharge(&memcg->memsw, batch);
1947 		mem_over_limit = mem_cgroup_from_counter(counter, memory);
1948 	} else {
1949 		mem_over_limit = mem_cgroup_from_counter(counter, memsw);
1950 		may_swap = false;
1951 	}
1952 
1953 	if (batch > nr_pages) {
1954 		batch = nr_pages;
1955 		goto retry;
1956 	}
1957 
1958 	/*
1959 	 * Unlike in global OOM situations, memcg is not in a physical
1960 	 * memory shortage.  Allow dying and OOM-killed tasks to
1961 	 * bypass the last charges so that they can exit quickly and
1962 	 * free their memory.
1963 	 */
1964 	if (unlikely(tsk_is_oom_victim(current) ||
1965 		     fatal_signal_pending(current) ||
1966 		     current->flags & PF_EXITING))
1967 		goto force;
1968 
1969 	/*
1970 	 * Prevent unbounded recursion when reclaim operations need to
1971 	 * allocate memory. This might exceed the limits temporarily,
1972 	 * but we prefer facilitating memory reclaim and getting back
1973 	 * under the limit over triggering OOM kills in these cases.
1974 	 */
1975 	if (unlikely(current->flags & PF_MEMALLOC))
1976 		goto force;
1977 
1978 	if (unlikely(task_in_memcg_oom(current)))
1979 		goto nomem;
1980 
1981 	if (!gfpflags_allow_blocking(gfp_mask))
1982 		goto nomem;
1983 
1984 	mem_cgroup_event(mem_over_limit, MEMCG_MAX);
1985 
1986 	nr_reclaimed = try_to_free_mem_cgroup_pages(mem_over_limit, nr_pages,
1987 						    gfp_mask, may_swap);
1988 
1989 	if (mem_cgroup_margin(mem_over_limit) >= nr_pages)
1990 		goto retry;
1991 
1992 	if (!drained) {
1993 		drain_all_stock(mem_over_limit);
1994 		drained = true;
1995 		goto retry;
1996 	}
1997 
1998 	if (gfp_mask & __GFP_NORETRY)
1999 		goto nomem;
2000 	/*
2001 	 * Even though the limit is exceeded at this point, reclaim
2002 	 * may have been able to free some pages.  Retry the charge
2003 	 * before killing the task.
2004 	 *
2005 	 * Only for regular pages, though: huge pages are rather
2006 	 * unlikely to succeed so close to the limit, and we fall back
2007 	 * to regular pages anyway in case of failure.
2008 	 */
2009 	if (nr_reclaimed && nr_pages <= (1 << PAGE_ALLOC_COSTLY_ORDER))
2010 		goto retry;
2011 	/*
2012 	 * At task move, charge accounts can be doubly counted. So, it's
2013 	 * better to wait until the end of task_move if something is going on.
2014 	 */
2015 	if (mem_cgroup_wait_acct_move(mem_over_limit))
2016 		goto retry;
2017 
2018 	if (nr_retries--)
2019 		goto retry;
2020 
2021 	if (gfp_mask & __GFP_NOFAIL)
2022 		goto force;
2023 
2024 	if (fatal_signal_pending(current))
2025 		goto force;
2026 
2027 	mem_cgroup_event(mem_over_limit, MEMCG_OOM);
2028 
2029 	mem_cgroup_oom(mem_over_limit, gfp_mask,
2030 		       get_order(nr_pages * PAGE_SIZE));
2031 nomem:
2032 	if (!(gfp_mask & __GFP_NOFAIL))
2033 		return -ENOMEM;
2034 force:
2035 	/*
2036 	 * The allocation either can't fail or will lead to more memory
2037 	 * being freed very soon.  Allow memory usage go over the limit
2038 	 * temporarily by force charging it.
2039 	 */
2040 	page_counter_charge(&memcg->memory, nr_pages);
2041 	if (do_memsw_account())
2042 		page_counter_charge(&memcg->memsw, nr_pages);
2043 	css_get_many(&memcg->css, nr_pages);
2044 
2045 	return 0;
2046 
2047 done_restock:
2048 	css_get_many(&memcg->css, batch);
2049 	if (batch > nr_pages)
2050 		refill_stock(memcg, batch - nr_pages);
2051 
2052 	/*
2053 	 * If the hierarchy is above the normal consumption range, schedule
2054 	 * reclaim on returning to userland.  We can perform reclaim here
2055 	 * if __GFP_RECLAIM but let's always punt for simplicity and so that
2056 	 * GFP_KERNEL can consistently be used during reclaim.  @memcg is
2057 	 * not recorded as it most likely matches current's and won't
2058 	 * change in the meantime.  As high limit is checked again before
2059 	 * reclaim, the cost of mismatch is negligible.
2060 	 */
2061 	do {
2062 		if (page_counter_read(&memcg->memory) > memcg->high) {
2063 			/* Don't bother a random interrupted task */
2064 			if (in_interrupt()) {
2065 				schedule_work(&memcg->high_work);
2066 				break;
2067 			}
2068 			current->memcg_nr_pages_over_high += batch;
2069 			set_notify_resume(current);
2070 			break;
2071 		}
2072 	} while ((memcg = parent_mem_cgroup(memcg)));
2073 
2074 	return 0;
2075 }
2076 
cancel_charge(struct mem_cgroup * memcg,unsigned int nr_pages)2077 static void cancel_charge(struct mem_cgroup *memcg, unsigned int nr_pages)
2078 {
2079 	if (mem_cgroup_is_root(memcg))
2080 		return;
2081 
2082 	page_counter_uncharge(&memcg->memory, nr_pages);
2083 	if (do_memsw_account())
2084 		page_counter_uncharge(&memcg->memsw, nr_pages);
2085 
2086 	css_put_many(&memcg->css, nr_pages);
2087 }
2088 
lock_page_lru(struct page * page,int * isolated)2089 static void lock_page_lru(struct page *page, int *isolated)
2090 {
2091 	struct zone *zone = page_zone(page);
2092 
2093 	spin_lock_irq(zone_lru_lock(zone));
2094 	if (PageLRU(page)) {
2095 		struct lruvec *lruvec;
2096 
2097 		lruvec = mem_cgroup_page_lruvec(page, zone->zone_pgdat);
2098 		ClearPageLRU(page);
2099 		del_page_from_lru_list(page, lruvec, page_lru(page));
2100 		*isolated = 1;
2101 	} else
2102 		*isolated = 0;
2103 }
2104 
unlock_page_lru(struct page * page,int isolated)2105 static void unlock_page_lru(struct page *page, int isolated)
2106 {
2107 	struct zone *zone = page_zone(page);
2108 
2109 	if (isolated) {
2110 		struct lruvec *lruvec;
2111 
2112 		lruvec = mem_cgroup_page_lruvec(page, zone->zone_pgdat);
2113 		VM_BUG_ON_PAGE(PageLRU(page), page);
2114 		SetPageLRU(page);
2115 		add_page_to_lru_list(page, lruvec, page_lru(page));
2116 	}
2117 	spin_unlock_irq(zone_lru_lock(zone));
2118 }
2119 
commit_charge(struct page * page,struct mem_cgroup * memcg,bool lrucare)2120 static void commit_charge(struct page *page, struct mem_cgroup *memcg,
2121 			  bool lrucare)
2122 {
2123 	int isolated;
2124 
2125 	VM_BUG_ON_PAGE(page->mem_cgroup, page);
2126 
2127 	/*
2128 	 * In some cases, SwapCache and FUSE(splice_buf->radixtree), the page
2129 	 * may already be on some other mem_cgroup's LRU.  Take care of it.
2130 	 */
2131 	if (lrucare)
2132 		lock_page_lru(page, &isolated);
2133 
2134 	/*
2135 	 * Nobody should be changing or seriously looking at
2136 	 * page->mem_cgroup at this point:
2137 	 *
2138 	 * - the page is uncharged
2139 	 *
2140 	 * - the page is off-LRU
2141 	 *
2142 	 * - an anonymous fault has exclusive page access, except for
2143 	 *   a locked page table
2144 	 *
2145 	 * - a page cache insertion, a swapin fault, or a migration
2146 	 *   have the page locked
2147 	 */
2148 	page->mem_cgroup = memcg;
2149 
2150 	if (lrucare)
2151 		unlock_page_lru(page, isolated);
2152 }
2153 
2154 #ifndef CONFIG_SLOB
memcg_alloc_cache_id(void)2155 static int memcg_alloc_cache_id(void)
2156 {
2157 	int id, size;
2158 	int err;
2159 
2160 	id = ida_simple_get(&memcg_cache_ida,
2161 			    0, MEMCG_CACHES_MAX_SIZE, GFP_KERNEL);
2162 	if (id < 0)
2163 		return id;
2164 
2165 	if (id < memcg_nr_cache_ids)
2166 		return id;
2167 
2168 	/*
2169 	 * There's no space for the new id in memcg_caches arrays,
2170 	 * so we have to grow them.
2171 	 */
2172 	down_write(&memcg_cache_ids_sem);
2173 
2174 	size = 2 * (id + 1);
2175 	if (size < MEMCG_CACHES_MIN_SIZE)
2176 		size = MEMCG_CACHES_MIN_SIZE;
2177 	else if (size > MEMCG_CACHES_MAX_SIZE)
2178 		size = MEMCG_CACHES_MAX_SIZE;
2179 
2180 	err = memcg_update_all_caches(size);
2181 	if (!err)
2182 		err = memcg_update_all_list_lrus(size);
2183 	if (!err)
2184 		memcg_nr_cache_ids = size;
2185 
2186 	up_write(&memcg_cache_ids_sem);
2187 
2188 	if (err) {
2189 		ida_simple_remove(&memcg_cache_ida, id);
2190 		return err;
2191 	}
2192 	return id;
2193 }
2194 
memcg_free_cache_id(int id)2195 static void memcg_free_cache_id(int id)
2196 {
2197 	ida_simple_remove(&memcg_cache_ida, id);
2198 }
2199 
2200 struct memcg_kmem_cache_create_work {
2201 	struct mem_cgroup *memcg;
2202 	struct kmem_cache *cachep;
2203 	struct work_struct work;
2204 };
2205 
memcg_kmem_cache_create_func(struct work_struct * w)2206 static void memcg_kmem_cache_create_func(struct work_struct *w)
2207 {
2208 	struct memcg_kmem_cache_create_work *cw =
2209 		container_of(w, struct memcg_kmem_cache_create_work, work);
2210 	struct mem_cgroup *memcg = cw->memcg;
2211 	struct kmem_cache *cachep = cw->cachep;
2212 
2213 	memcg_create_kmem_cache(memcg, cachep);
2214 
2215 	css_put(&memcg->css);
2216 	kfree(cw);
2217 }
2218 
2219 /*
2220  * Enqueue the creation of a per-memcg kmem_cache.
2221  */
__memcg_schedule_kmem_cache_create(struct mem_cgroup * memcg,struct kmem_cache * cachep)2222 static void __memcg_schedule_kmem_cache_create(struct mem_cgroup *memcg,
2223 					       struct kmem_cache *cachep)
2224 {
2225 	struct memcg_kmem_cache_create_work *cw;
2226 
2227 	cw = kmalloc(sizeof(*cw), GFP_NOWAIT | __GFP_NOWARN);
2228 	if (!cw)
2229 		return;
2230 
2231 	css_get(&memcg->css);
2232 
2233 	cw->memcg = memcg;
2234 	cw->cachep = cachep;
2235 	INIT_WORK(&cw->work, memcg_kmem_cache_create_func);
2236 
2237 	queue_work(memcg_kmem_cache_wq, &cw->work);
2238 }
2239 
memcg_schedule_kmem_cache_create(struct mem_cgroup * memcg,struct kmem_cache * cachep)2240 static void memcg_schedule_kmem_cache_create(struct mem_cgroup *memcg,
2241 					     struct kmem_cache *cachep)
2242 {
2243 	/*
2244 	 * We need to stop accounting when we kmalloc, because if the
2245 	 * corresponding kmalloc cache is not yet created, the first allocation
2246 	 * in __memcg_schedule_kmem_cache_create will recurse.
2247 	 *
2248 	 * However, it is better to enclose the whole function. Depending on
2249 	 * the debugging options enabled, INIT_WORK(), for instance, can
2250 	 * trigger an allocation. This too, will make us recurse. Because at
2251 	 * this point we can't allow ourselves back into memcg_kmem_get_cache,
2252 	 * the safest choice is to do it like this, wrapping the whole function.
2253 	 */
2254 	current->memcg_kmem_skip_account = 1;
2255 	__memcg_schedule_kmem_cache_create(memcg, cachep);
2256 	current->memcg_kmem_skip_account = 0;
2257 }
2258 
memcg_kmem_bypass(void)2259 static inline bool memcg_kmem_bypass(void)
2260 {
2261 	if (in_interrupt() || !current->mm || (current->flags & PF_KTHREAD))
2262 		return true;
2263 	return false;
2264 }
2265 
2266 /**
2267  * memcg_kmem_get_cache: select the correct per-memcg cache for allocation
2268  * @cachep: the original global kmem cache
2269  *
2270  * Return the kmem_cache we're supposed to use for a slab allocation.
2271  * We try to use the current memcg's version of the cache.
2272  *
2273  * If the cache does not exist yet, if we are the first user of it, we
2274  * create it asynchronously in a workqueue and let the current allocation
2275  * go through with the original cache.
2276  *
2277  * This function takes a reference to the cache it returns to assure it
2278  * won't get destroyed while we are working with it. Once the caller is
2279  * done with it, memcg_kmem_put_cache() must be called to release the
2280  * reference.
2281  */
memcg_kmem_get_cache(struct kmem_cache * cachep)2282 struct kmem_cache *memcg_kmem_get_cache(struct kmem_cache *cachep)
2283 {
2284 	struct mem_cgroup *memcg;
2285 	struct kmem_cache *memcg_cachep;
2286 	int kmemcg_id;
2287 
2288 	VM_BUG_ON(!is_root_cache(cachep));
2289 
2290 	if (memcg_kmem_bypass())
2291 		return cachep;
2292 
2293 	if (current->memcg_kmem_skip_account)
2294 		return cachep;
2295 
2296 	memcg = get_mem_cgroup_from_mm(current->mm);
2297 	kmemcg_id = READ_ONCE(memcg->kmemcg_id);
2298 	if (kmemcg_id < 0)
2299 		goto out;
2300 
2301 	memcg_cachep = cache_from_memcg_idx(cachep, kmemcg_id);
2302 	if (likely(memcg_cachep))
2303 		return memcg_cachep;
2304 
2305 	/*
2306 	 * If we are in a safe context (can wait, and not in interrupt
2307 	 * context), we could be be predictable and return right away.
2308 	 * This would guarantee that the allocation being performed
2309 	 * already belongs in the new cache.
2310 	 *
2311 	 * However, there are some clashes that can arrive from locking.
2312 	 * For instance, because we acquire the slab_mutex while doing
2313 	 * memcg_create_kmem_cache, this means no further allocation
2314 	 * could happen with the slab_mutex held. So it's better to
2315 	 * defer everything.
2316 	 */
2317 	memcg_schedule_kmem_cache_create(memcg, cachep);
2318 out:
2319 	css_put(&memcg->css);
2320 	return cachep;
2321 }
2322 
2323 /**
2324  * memcg_kmem_put_cache: drop reference taken by memcg_kmem_get_cache
2325  * @cachep: the cache returned by memcg_kmem_get_cache
2326  */
memcg_kmem_put_cache(struct kmem_cache * cachep)2327 void memcg_kmem_put_cache(struct kmem_cache *cachep)
2328 {
2329 	if (!is_root_cache(cachep))
2330 		css_put(&cachep->memcg_params.memcg->css);
2331 }
2332 
2333 /**
2334  * memcg_kmem_charge: charge a kmem page
2335  * @page: page to charge
2336  * @gfp: reclaim mode
2337  * @order: allocation order
2338  * @memcg: memory cgroup to charge
2339  *
2340  * Returns 0 on success, an error code on failure.
2341  */
memcg_kmem_charge_memcg(struct page * page,gfp_t gfp,int order,struct mem_cgroup * memcg)2342 int memcg_kmem_charge_memcg(struct page *page, gfp_t gfp, int order,
2343 			    struct mem_cgroup *memcg)
2344 {
2345 	unsigned int nr_pages = 1 << order;
2346 	struct page_counter *counter;
2347 	int ret;
2348 
2349 	ret = try_charge(memcg, gfp, nr_pages);
2350 	if (ret)
2351 		return ret;
2352 
2353 	if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) &&
2354 	    !page_counter_try_charge(&memcg->kmem, nr_pages, &counter)) {
2355 
2356 		/*
2357 		 * Enforce __GFP_NOFAIL allocation because callers are not
2358 		 * prepared to see failures and likely do not have any failure
2359 		 * handling code.
2360 		 */
2361 		if (gfp & __GFP_NOFAIL) {
2362 			page_counter_charge(&memcg->kmem, nr_pages);
2363 			return 0;
2364 		}
2365 		cancel_charge(memcg, nr_pages);
2366 		return -ENOMEM;
2367 	}
2368 
2369 	page->mem_cgroup = memcg;
2370 
2371 	return 0;
2372 }
2373 
2374 /**
2375  * memcg_kmem_charge: charge a kmem page to the current memory cgroup
2376  * @page: page to charge
2377  * @gfp: reclaim mode
2378  * @order: allocation order
2379  *
2380  * Returns 0 on success, an error code on failure.
2381  */
memcg_kmem_charge(struct page * page,gfp_t gfp,int order)2382 int memcg_kmem_charge(struct page *page, gfp_t gfp, int order)
2383 {
2384 	struct mem_cgroup *memcg;
2385 	int ret = 0;
2386 
2387 	if (memcg_kmem_bypass())
2388 		return 0;
2389 
2390 	memcg = get_mem_cgroup_from_mm(current->mm);
2391 	if (!mem_cgroup_is_root(memcg)) {
2392 		ret = memcg_kmem_charge_memcg(page, gfp, order, memcg);
2393 		if (!ret)
2394 			__SetPageKmemcg(page);
2395 	}
2396 	css_put(&memcg->css);
2397 	return ret;
2398 }
2399 /**
2400  * memcg_kmem_uncharge: uncharge a kmem page
2401  * @page: page to uncharge
2402  * @order: allocation order
2403  */
memcg_kmem_uncharge(struct page * page,int order)2404 void memcg_kmem_uncharge(struct page *page, int order)
2405 {
2406 	struct mem_cgroup *memcg = page->mem_cgroup;
2407 	unsigned int nr_pages = 1 << order;
2408 
2409 	if (!memcg)
2410 		return;
2411 
2412 	VM_BUG_ON_PAGE(mem_cgroup_is_root(memcg), page);
2413 
2414 	if (!cgroup_subsys_on_dfl(memory_cgrp_subsys))
2415 		page_counter_uncharge(&memcg->kmem, nr_pages);
2416 
2417 	page_counter_uncharge(&memcg->memory, nr_pages);
2418 	if (do_memsw_account())
2419 		page_counter_uncharge(&memcg->memsw, nr_pages);
2420 
2421 	page->mem_cgroup = NULL;
2422 
2423 	/* slab pages do not have PageKmemcg flag set */
2424 	if (PageKmemcg(page))
2425 		__ClearPageKmemcg(page);
2426 
2427 	css_put_many(&memcg->css, nr_pages);
2428 }
2429 #endif /* !CONFIG_SLOB */
2430 
2431 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
2432 
2433 /*
2434  * Because tail pages are not marked as "used", set it. We're under
2435  * zone_lru_lock and migration entries setup in all page mappings.
2436  */
mem_cgroup_split_huge_fixup(struct page * head)2437 void mem_cgroup_split_huge_fixup(struct page *head)
2438 {
2439 	int i;
2440 
2441 	if (mem_cgroup_disabled())
2442 		return;
2443 
2444 	for (i = 1; i < HPAGE_PMD_NR; i++)
2445 		head[i].mem_cgroup = head->mem_cgroup;
2446 
2447 	__this_cpu_sub(head->mem_cgroup->stat->count[MEMCG_RSS_HUGE],
2448 		       HPAGE_PMD_NR);
2449 }
2450 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
2451 
2452 #ifdef CONFIG_MEMCG_SWAP
mem_cgroup_swap_statistics(struct mem_cgroup * memcg,int nr_entries)2453 static void mem_cgroup_swap_statistics(struct mem_cgroup *memcg,
2454 				       int nr_entries)
2455 {
2456 	this_cpu_add(memcg->stat->count[MEMCG_SWAP], nr_entries);
2457 }
2458 
2459 /**
2460  * mem_cgroup_move_swap_account - move swap charge and swap_cgroup's record.
2461  * @entry: swap entry to be moved
2462  * @from:  mem_cgroup which the entry is moved from
2463  * @to:  mem_cgroup which the entry is moved to
2464  *
2465  * It succeeds only when the swap_cgroup's record for this entry is the same
2466  * as the mem_cgroup's id of @from.
2467  *
2468  * Returns 0 on success, -EINVAL on failure.
2469  *
2470  * The caller must have charged to @to, IOW, called page_counter_charge() about
2471  * both res and memsw, and called css_get().
2472  */
mem_cgroup_move_swap_account(swp_entry_t entry,struct mem_cgroup * from,struct mem_cgroup * to)2473 static int mem_cgroup_move_swap_account(swp_entry_t entry,
2474 				struct mem_cgroup *from, struct mem_cgroup *to)
2475 {
2476 	unsigned short old_id, new_id;
2477 
2478 	old_id = mem_cgroup_id(from);
2479 	new_id = mem_cgroup_id(to);
2480 
2481 	if (swap_cgroup_cmpxchg(entry, old_id, new_id) == old_id) {
2482 		mem_cgroup_swap_statistics(from, -1);
2483 		mem_cgroup_swap_statistics(to, 1);
2484 		return 0;
2485 	}
2486 	return -EINVAL;
2487 }
2488 #else
mem_cgroup_move_swap_account(swp_entry_t entry,struct mem_cgroup * from,struct mem_cgroup * to)2489 static inline int mem_cgroup_move_swap_account(swp_entry_t entry,
2490 				struct mem_cgroup *from, struct mem_cgroup *to)
2491 {
2492 	return -EINVAL;
2493 }
2494 #endif
2495 
2496 static DEFINE_MUTEX(memcg_limit_mutex);
2497 
mem_cgroup_resize_limit(struct mem_cgroup * memcg,unsigned long limit)2498 static int mem_cgroup_resize_limit(struct mem_cgroup *memcg,
2499 				   unsigned long limit)
2500 {
2501 	unsigned long curusage;
2502 	unsigned long oldusage;
2503 	bool enlarge = false;
2504 	int retry_count;
2505 	int ret;
2506 
2507 	/*
2508 	 * For keeping hierarchical_reclaim simple, how long we should retry
2509 	 * is depends on callers. We set our retry-count to be function
2510 	 * of # of children which we should visit in this loop.
2511 	 */
2512 	retry_count = MEM_CGROUP_RECLAIM_RETRIES *
2513 		      mem_cgroup_count_children(memcg);
2514 
2515 	oldusage = page_counter_read(&memcg->memory);
2516 
2517 	do {
2518 		if (signal_pending(current)) {
2519 			ret = -EINTR;
2520 			break;
2521 		}
2522 
2523 		mutex_lock(&memcg_limit_mutex);
2524 		if (limit > memcg->memsw.limit) {
2525 			mutex_unlock(&memcg_limit_mutex);
2526 			ret = -EINVAL;
2527 			break;
2528 		}
2529 		if (limit > memcg->memory.limit)
2530 			enlarge = true;
2531 		ret = page_counter_limit(&memcg->memory, limit);
2532 		mutex_unlock(&memcg_limit_mutex);
2533 
2534 		if (!ret)
2535 			break;
2536 
2537 		try_to_free_mem_cgroup_pages(memcg, 1, GFP_KERNEL, true);
2538 
2539 		curusage = page_counter_read(&memcg->memory);
2540 		/* Usage is reduced ? */
2541 		if (curusage >= oldusage)
2542 			retry_count--;
2543 		else
2544 			oldusage = curusage;
2545 	} while (retry_count);
2546 
2547 	if (!ret && enlarge)
2548 		memcg_oom_recover(memcg);
2549 
2550 	return ret;
2551 }
2552 
mem_cgroup_resize_memsw_limit(struct mem_cgroup * memcg,unsigned long limit)2553 static int mem_cgroup_resize_memsw_limit(struct mem_cgroup *memcg,
2554 					 unsigned long limit)
2555 {
2556 	unsigned long curusage;
2557 	unsigned long oldusage;
2558 	bool enlarge = false;
2559 	int retry_count;
2560 	int ret;
2561 
2562 	/* see mem_cgroup_resize_res_limit */
2563 	retry_count = MEM_CGROUP_RECLAIM_RETRIES *
2564 		      mem_cgroup_count_children(memcg);
2565 
2566 	oldusage = page_counter_read(&memcg->memsw);
2567 
2568 	do {
2569 		if (signal_pending(current)) {
2570 			ret = -EINTR;
2571 			break;
2572 		}
2573 
2574 		mutex_lock(&memcg_limit_mutex);
2575 		if (limit < memcg->memory.limit) {
2576 			mutex_unlock(&memcg_limit_mutex);
2577 			ret = -EINVAL;
2578 			break;
2579 		}
2580 		if (limit > memcg->memsw.limit)
2581 			enlarge = true;
2582 		ret = page_counter_limit(&memcg->memsw, limit);
2583 		mutex_unlock(&memcg_limit_mutex);
2584 
2585 		if (!ret)
2586 			break;
2587 
2588 		try_to_free_mem_cgroup_pages(memcg, 1, GFP_KERNEL, false);
2589 
2590 		curusage = page_counter_read(&memcg->memsw);
2591 		/* Usage is reduced ? */
2592 		if (curusage >= oldusage)
2593 			retry_count--;
2594 		else
2595 			oldusage = curusage;
2596 	} while (retry_count);
2597 
2598 	if (!ret && enlarge)
2599 		memcg_oom_recover(memcg);
2600 
2601 	return ret;
2602 }
2603 
mem_cgroup_soft_limit_reclaim(pg_data_t * pgdat,int order,gfp_t gfp_mask,unsigned long * total_scanned)2604 unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order,
2605 					    gfp_t gfp_mask,
2606 					    unsigned long *total_scanned)
2607 {
2608 	unsigned long nr_reclaimed = 0;
2609 	struct mem_cgroup_per_node *mz, *next_mz = NULL;
2610 	unsigned long reclaimed;
2611 	int loop = 0;
2612 	struct mem_cgroup_tree_per_node *mctz;
2613 	unsigned long excess;
2614 	unsigned long nr_scanned;
2615 
2616 	if (order > 0)
2617 		return 0;
2618 
2619 	mctz = soft_limit_tree_node(pgdat->node_id);
2620 
2621 	/*
2622 	 * Do not even bother to check the largest node if the root
2623 	 * is empty. Do it lockless to prevent lock bouncing. Races
2624 	 * are acceptable as soft limit is best effort anyway.
2625 	 */
2626 	if (!mctz || RB_EMPTY_ROOT(&mctz->rb_root))
2627 		return 0;
2628 
2629 	/*
2630 	 * This loop can run a while, specially if mem_cgroup's continuously
2631 	 * keep exceeding their soft limit and putting the system under
2632 	 * pressure
2633 	 */
2634 	do {
2635 		if (next_mz)
2636 			mz = next_mz;
2637 		else
2638 			mz = mem_cgroup_largest_soft_limit_node(mctz);
2639 		if (!mz)
2640 			break;
2641 
2642 		nr_scanned = 0;
2643 		reclaimed = mem_cgroup_soft_reclaim(mz->memcg, pgdat,
2644 						    gfp_mask, &nr_scanned);
2645 		nr_reclaimed += reclaimed;
2646 		*total_scanned += nr_scanned;
2647 		spin_lock_irq(&mctz->lock);
2648 		__mem_cgroup_remove_exceeded(mz, mctz);
2649 
2650 		/*
2651 		 * If we failed to reclaim anything from this memory cgroup
2652 		 * it is time to move on to the next cgroup
2653 		 */
2654 		next_mz = NULL;
2655 		if (!reclaimed)
2656 			next_mz = __mem_cgroup_largest_soft_limit_node(mctz);
2657 
2658 		excess = soft_limit_excess(mz->memcg);
2659 		/*
2660 		 * One school of thought says that we should not add
2661 		 * back the node to the tree if reclaim returns 0.
2662 		 * But our reclaim could return 0, simply because due
2663 		 * to priority we are exposing a smaller subset of
2664 		 * memory to reclaim from. Consider this as a longer
2665 		 * term TODO.
2666 		 */
2667 		/* If excess == 0, no tree ops */
2668 		__mem_cgroup_insert_exceeded(mz, mctz, excess);
2669 		spin_unlock_irq(&mctz->lock);
2670 		css_put(&mz->memcg->css);
2671 		loop++;
2672 		/*
2673 		 * Could not reclaim anything and there are no more
2674 		 * mem cgroups to try or we seem to be looping without
2675 		 * reclaiming anything.
2676 		 */
2677 		if (!nr_reclaimed &&
2678 			(next_mz == NULL ||
2679 			loop > MEM_CGROUP_MAX_SOFT_LIMIT_RECLAIM_LOOPS))
2680 			break;
2681 	} while (!nr_reclaimed);
2682 	if (next_mz)
2683 		css_put(&next_mz->memcg->css);
2684 	return nr_reclaimed;
2685 }
2686 
2687 /*
2688  * Test whether @memcg has children, dead or alive.  Note that this
2689  * function doesn't care whether @memcg has use_hierarchy enabled and
2690  * returns %true if there are child csses according to the cgroup
2691  * hierarchy.  Testing use_hierarchy is the caller's responsiblity.
2692  */
memcg_has_children(struct mem_cgroup * memcg)2693 static inline bool memcg_has_children(struct mem_cgroup *memcg)
2694 {
2695 	bool ret;
2696 
2697 	rcu_read_lock();
2698 	ret = css_next_child(NULL, &memcg->css);
2699 	rcu_read_unlock();
2700 	return ret;
2701 }
2702 
2703 /*
2704  * Reclaims as many pages from the given memcg as possible.
2705  *
2706  * Caller is responsible for holding css reference for memcg.
2707  */
mem_cgroup_force_empty(struct mem_cgroup * memcg)2708 static int mem_cgroup_force_empty(struct mem_cgroup *memcg)
2709 {
2710 	int nr_retries = MEM_CGROUP_RECLAIM_RETRIES;
2711 
2712 	/* we call try-to-free pages for make this cgroup empty */
2713 	lru_add_drain_all();
2714 	/* try to free all pages in this cgroup */
2715 	while (nr_retries && page_counter_read(&memcg->memory)) {
2716 		int progress;
2717 
2718 		if (signal_pending(current))
2719 			return -EINTR;
2720 
2721 		progress = try_to_free_mem_cgroup_pages(memcg, 1,
2722 							GFP_KERNEL, true);
2723 		if (!progress) {
2724 			nr_retries--;
2725 			/* maybe some writeback is necessary */
2726 			congestion_wait(BLK_RW_ASYNC, HZ/10);
2727 		}
2728 
2729 	}
2730 
2731 	return 0;
2732 }
2733 
mem_cgroup_force_empty_write(struct kernfs_open_file * of,char * buf,size_t nbytes,loff_t off)2734 static ssize_t mem_cgroup_force_empty_write(struct kernfs_open_file *of,
2735 					    char *buf, size_t nbytes,
2736 					    loff_t off)
2737 {
2738 	struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
2739 
2740 	if (mem_cgroup_is_root(memcg))
2741 		return -EINVAL;
2742 	return mem_cgroup_force_empty(memcg) ?: nbytes;
2743 }
2744 
mem_cgroup_hierarchy_read(struct cgroup_subsys_state * css,struct cftype * cft)2745 static u64 mem_cgroup_hierarchy_read(struct cgroup_subsys_state *css,
2746 				     struct cftype *cft)
2747 {
2748 	return mem_cgroup_from_css(css)->use_hierarchy;
2749 }
2750 
mem_cgroup_hierarchy_write(struct cgroup_subsys_state * css,struct cftype * cft,u64 val)2751 static int mem_cgroup_hierarchy_write(struct cgroup_subsys_state *css,
2752 				      struct cftype *cft, u64 val)
2753 {
2754 	int retval = 0;
2755 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
2756 	struct mem_cgroup *parent_memcg = mem_cgroup_from_css(memcg->css.parent);
2757 
2758 	if (memcg->use_hierarchy == val)
2759 		return 0;
2760 
2761 	/*
2762 	 * If parent's use_hierarchy is set, we can't make any modifications
2763 	 * in the child subtrees. If it is unset, then the change can
2764 	 * occur, provided the current cgroup has no children.
2765 	 *
2766 	 * For the root cgroup, parent_mem is NULL, we allow value to be
2767 	 * set if there are no children.
2768 	 */
2769 	if ((!parent_memcg || !parent_memcg->use_hierarchy) &&
2770 				(val == 1 || val == 0)) {
2771 		if (!memcg_has_children(memcg))
2772 			memcg->use_hierarchy = val;
2773 		else
2774 			retval = -EBUSY;
2775 	} else
2776 		retval = -EINVAL;
2777 
2778 	return retval;
2779 }
2780 
tree_stat(struct mem_cgroup * memcg,unsigned long * stat)2781 static void tree_stat(struct mem_cgroup *memcg, unsigned long *stat)
2782 {
2783 	struct mem_cgroup *iter;
2784 	int i;
2785 
2786 	memset(stat, 0, sizeof(*stat) * MEMCG_NR_STAT);
2787 
2788 	for_each_mem_cgroup_tree(iter, memcg) {
2789 		for (i = 0; i < MEMCG_NR_STAT; i++)
2790 			stat[i] += memcg_page_state(iter, i);
2791 	}
2792 }
2793 
tree_events(struct mem_cgroup * memcg,unsigned long * events)2794 static void tree_events(struct mem_cgroup *memcg, unsigned long *events)
2795 {
2796 	struct mem_cgroup *iter;
2797 	int i;
2798 
2799 	memset(events, 0, sizeof(*events) * MEMCG_NR_EVENTS);
2800 
2801 	for_each_mem_cgroup_tree(iter, memcg) {
2802 		for (i = 0; i < MEMCG_NR_EVENTS; i++)
2803 			events[i] += memcg_sum_events(iter, i);
2804 	}
2805 }
2806 
mem_cgroup_usage(struct mem_cgroup * memcg,bool swap)2807 static unsigned long mem_cgroup_usage(struct mem_cgroup *memcg, bool swap)
2808 {
2809 	unsigned long val = 0;
2810 
2811 	if (mem_cgroup_is_root(memcg)) {
2812 		struct mem_cgroup *iter;
2813 
2814 		for_each_mem_cgroup_tree(iter, memcg) {
2815 			val += memcg_page_state(iter, MEMCG_CACHE);
2816 			val += memcg_page_state(iter, MEMCG_RSS);
2817 			if (swap)
2818 				val += memcg_page_state(iter, MEMCG_SWAP);
2819 		}
2820 	} else {
2821 		if (!swap)
2822 			val = page_counter_read(&memcg->memory);
2823 		else
2824 			val = page_counter_read(&memcg->memsw);
2825 	}
2826 	return val;
2827 }
2828 
2829 enum {
2830 	RES_USAGE,
2831 	RES_LIMIT,
2832 	RES_MAX_USAGE,
2833 	RES_FAILCNT,
2834 	RES_SOFT_LIMIT,
2835 };
2836 
mem_cgroup_read_u64(struct cgroup_subsys_state * css,struct cftype * cft)2837 static u64 mem_cgroup_read_u64(struct cgroup_subsys_state *css,
2838 			       struct cftype *cft)
2839 {
2840 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
2841 	struct page_counter *counter;
2842 
2843 	switch (MEMFILE_TYPE(cft->private)) {
2844 	case _MEM:
2845 		counter = &memcg->memory;
2846 		break;
2847 	case _MEMSWAP:
2848 		counter = &memcg->memsw;
2849 		break;
2850 	case _KMEM:
2851 		counter = &memcg->kmem;
2852 		break;
2853 	case _TCP:
2854 		counter = &memcg->tcpmem;
2855 		break;
2856 	default:
2857 		BUG();
2858 	}
2859 
2860 	switch (MEMFILE_ATTR(cft->private)) {
2861 	case RES_USAGE:
2862 		if (counter == &memcg->memory)
2863 			return (u64)mem_cgroup_usage(memcg, false) * PAGE_SIZE;
2864 		if (counter == &memcg->memsw)
2865 			return (u64)mem_cgroup_usage(memcg, true) * PAGE_SIZE;
2866 		return (u64)page_counter_read(counter) * PAGE_SIZE;
2867 	case RES_LIMIT:
2868 		return (u64)counter->limit * PAGE_SIZE;
2869 	case RES_MAX_USAGE:
2870 		return (u64)counter->watermark * PAGE_SIZE;
2871 	case RES_FAILCNT:
2872 		return counter->failcnt;
2873 	case RES_SOFT_LIMIT:
2874 		return (u64)memcg->soft_limit * PAGE_SIZE;
2875 	default:
2876 		BUG();
2877 	}
2878 }
2879 
2880 #ifndef CONFIG_SLOB
memcg_online_kmem(struct mem_cgroup * memcg)2881 static int memcg_online_kmem(struct mem_cgroup *memcg)
2882 {
2883 	int memcg_id;
2884 
2885 	if (cgroup_memory_nokmem)
2886 		return 0;
2887 
2888 	BUG_ON(memcg->kmemcg_id >= 0);
2889 	BUG_ON(memcg->kmem_state);
2890 
2891 	memcg_id = memcg_alloc_cache_id();
2892 	if (memcg_id < 0)
2893 		return memcg_id;
2894 
2895 	static_branch_inc(&memcg_kmem_enabled_key);
2896 	/*
2897 	 * A memory cgroup is considered kmem-online as soon as it gets
2898 	 * kmemcg_id. Setting the id after enabling static branching will
2899 	 * guarantee no one starts accounting before all call sites are
2900 	 * patched.
2901 	 */
2902 	memcg->kmemcg_id = memcg_id;
2903 	memcg->kmem_state = KMEM_ONLINE;
2904 	INIT_LIST_HEAD(&memcg->kmem_caches);
2905 
2906 	return 0;
2907 }
2908 
memcg_offline_kmem(struct mem_cgroup * memcg)2909 static void memcg_offline_kmem(struct mem_cgroup *memcg)
2910 {
2911 	struct cgroup_subsys_state *css;
2912 	struct mem_cgroup *parent, *child;
2913 	int kmemcg_id;
2914 
2915 	if (memcg->kmem_state != KMEM_ONLINE)
2916 		return;
2917 	/*
2918 	 * Clear the online state before clearing memcg_caches array
2919 	 * entries. The slab_mutex in memcg_deactivate_kmem_caches()
2920 	 * guarantees that no cache will be created for this cgroup
2921 	 * after we are done (see memcg_create_kmem_cache()).
2922 	 */
2923 	memcg->kmem_state = KMEM_ALLOCATED;
2924 
2925 	memcg_deactivate_kmem_caches(memcg);
2926 
2927 	kmemcg_id = memcg->kmemcg_id;
2928 	BUG_ON(kmemcg_id < 0);
2929 
2930 	parent = parent_mem_cgroup(memcg);
2931 	if (!parent)
2932 		parent = root_mem_cgroup;
2933 
2934 	/*
2935 	 * Change kmemcg_id of this cgroup and all its descendants to the
2936 	 * parent's id, and then move all entries from this cgroup's list_lrus
2937 	 * to ones of the parent. After we have finished, all list_lrus
2938 	 * corresponding to this cgroup are guaranteed to remain empty. The
2939 	 * ordering is imposed by list_lru_node->lock taken by
2940 	 * memcg_drain_all_list_lrus().
2941 	 */
2942 	rcu_read_lock(); /* can be called from css_free w/o cgroup_mutex */
2943 	css_for_each_descendant_pre(css, &memcg->css) {
2944 		child = mem_cgroup_from_css(css);
2945 		BUG_ON(child->kmemcg_id != kmemcg_id);
2946 		child->kmemcg_id = parent->kmemcg_id;
2947 		if (!memcg->use_hierarchy)
2948 			break;
2949 	}
2950 	rcu_read_unlock();
2951 
2952 	memcg_drain_all_list_lrus(kmemcg_id, parent->kmemcg_id);
2953 
2954 	memcg_free_cache_id(kmemcg_id);
2955 }
2956 
memcg_free_kmem(struct mem_cgroup * memcg)2957 static void memcg_free_kmem(struct mem_cgroup *memcg)
2958 {
2959 	/* css_alloc() failed, offlining didn't happen */
2960 	if (unlikely(memcg->kmem_state == KMEM_ONLINE))
2961 		memcg_offline_kmem(memcg);
2962 
2963 	if (memcg->kmem_state == KMEM_ALLOCATED) {
2964 		memcg_destroy_kmem_caches(memcg);
2965 		static_branch_dec(&memcg_kmem_enabled_key);
2966 		WARN_ON(page_counter_read(&memcg->kmem));
2967 	}
2968 }
2969 #else
memcg_online_kmem(struct mem_cgroup * memcg)2970 static int memcg_online_kmem(struct mem_cgroup *memcg)
2971 {
2972 	return 0;
2973 }
memcg_offline_kmem(struct mem_cgroup * memcg)2974 static void memcg_offline_kmem(struct mem_cgroup *memcg)
2975 {
2976 }
memcg_free_kmem(struct mem_cgroup * memcg)2977 static void memcg_free_kmem(struct mem_cgroup *memcg)
2978 {
2979 }
2980 #endif /* !CONFIG_SLOB */
2981 
memcg_update_kmem_limit(struct mem_cgroup * memcg,unsigned long limit)2982 static int memcg_update_kmem_limit(struct mem_cgroup *memcg,
2983 				   unsigned long limit)
2984 {
2985 	int ret;
2986 
2987 	mutex_lock(&memcg_limit_mutex);
2988 	ret = page_counter_limit(&memcg->kmem, limit);
2989 	mutex_unlock(&memcg_limit_mutex);
2990 	return ret;
2991 }
2992 
memcg_update_tcp_limit(struct mem_cgroup * memcg,unsigned long limit)2993 static int memcg_update_tcp_limit(struct mem_cgroup *memcg, unsigned long limit)
2994 {
2995 	int ret;
2996 
2997 	mutex_lock(&memcg_limit_mutex);
2998 
2999 	ret = page_counter_limit(&memcg->tcpmem, limit);
3000 	if (ret)
3001 		goto out;
3002 
3003 	if (!memcg->tcpmem_active) {
3004 		/*
3005 		 * The active flag needs to be written after the static_key
3006 		 * update. This is what guarantees that the socket activation
3007 		 * function is the last one to run. See mem_cgroup_sk_alloc()
3008 		 * for details, and note that we don't mark any socket as
3009 		 * belonging to this memcg until that flag is up.
3010 		 *
3011 		 * We need to do this, because static_keys will span multiple
3012 		 * sites, but we can't control their order. If we mark a socket
3013 		 * as accounted, but the accounting functions are not patched in
3014 		 * yet, we'll lose accounting.
3015 		 *
3016 		 * We never race with the readers in mem_cgroup_sk_alloc(),
3017 		 * because when this value change, the code to process it is not
3018 		 * patched in yet.
3019 		 */
3020 		static_branch_inc(&memcg_sockets_enabled_key);
3021 		memcg->tcpmem_active = true;
3022 	}
3023 out:
3024 	mutex_unlock(&memcg_limit_mutex);
3025 	return ret;
3026 }
3027 
3028 /*
3029  * The user of this function is...
3030  * RES_LIMIT.
3031  */
mem_cgroup_write(struct kernfs_open_file * of,char * buf,size_t nbytes,loff_t off)3032 static ssize_t mem_cgroup_write(struct kernfs_open_file *of,
3033 				char *buf, size_t nbytes, loff_t off)
3034 {
3035 	struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
3036 	unsigned long nr_pages;
3037 	int ret;
3038 
3039 	buf = strstrip(buf);
3040 	ret = page_counter_memparse(buf, "-1", &nr_pages);
3041 	if (ret)
3042 		return ret;
3043 
3044 	switch (MEMFILE_ATTR(of_cft(of)->private)) {
3045 	case RES_LIMIT:
3046 		if (mem_cgroup_is_root(memcg)) { /* Can't set limit on root */
3047 			ret = -EINVAL;
3048 			break;
3049 		}
3050 		switch (MEMFILE_TYPE(of_cft(of)->private)) {
3051 		case _MEM:
3052 			ret = mem_cgroup_resize_limit(memcg, nr_pages);
3053 			break;
3054 		case _MEMSWAP:
3055 			ret = mem_cgroup_resize_memsw_limit(memcg, nr_pages);
3056 			break;
3057 		case _KMEM:
3058 			ret = memcg_update_kmem_limit(memcg, nr_pages);
3059 			break;
3060 		case _TCP:
3061 			ret = memcg_update_tcp_limit(memcg, nr_pages);
3062 			break;
3063 		}
3064 		break;
3065 	case RES_SOFT_LIMIT:
3066 		memcg->soft_limit = nr_pages;
3067 		ret = 0;
3068 		break;
3069 	}
3070 	return ret ?: nbytes;
3071 }
3072 
mem_cgroup_reset(struct kernfs_open_file * of,char * buf,size_t nbytes,loff_t off)3073 static ssize_t mem_cgroup_reset(struct kernfs_open_file *of, char *buf,
3074 				size_t nbytes, loff_t off)
3075 {
3076 	struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
3077 	struct page_counter *counter;
3078 
3079 	switch (MEMFILE_TYPE(of_cft(of)->private)) {
3080 	case _MEM:
3081 		counter = &memcg->memory;
3082 		break;
3083 	case _MEMSWAP:
3084 		counter = &memcg->memsw;
3085 		break;
3086 	case _KMEM:
3087 		counter = &memcg->kmem;
3088 		break;
3089 	case _TCP:
3090 		counter = &memcg->tcpmem;
3091 		break;
3092 	default:
3093 		BUG();
3094 	}
3095 
3096 	switch (MEMFILE_ATTR(of_cft(of)->private)) {
3097 	case RES_MAX_USAGE:
3098 		page_counter_reset_watermark(counter);
3099 		break;
3100 	case RES_FAILCNT:
3101 		counter->failcnt = 0;
3102 		break;
3103 	default:
3104 		BUG();
3105 	}
3106 
3107 	return nbytes;
3108 }
3109 
mem_cgroup_move_charge_read(struct cgroup_subsys_state * css,struct cftype * cft)3110 static u64 mem_cgroup_move_charge_read(struct cgroup_subsys_state *css,
3111 					struct cftype *cft)
3112 {
3113 	return mem_cgroup_from_css(css)->move_charge_at_immigrate;
3114 }
3115 
3116 #ifdef CONFIG_MMU
mem_cgroup_move_charge_write(struct cgroup_subsys_state * css,struct cftype * cft,u64 val)3117 static int mem_cgroup_move_charge_write(struct cgroup_subsys_state *css,
3118 					struct cftype *cft, u64 val)
3119 {
3120 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
3121 
3122 	if (val & ~MOVE_MASK)
3123 		return -EINVAL;
3124 
3125 	/*
3126 	 * No kind of locking is needed in here, because ->can_attach() will
3127 	 * check this value once in the beginning of the process, and then carry
3128 	 * on with stale data. This means that changes to this value will only
3129 	 * affect task migrations starting after the change.
3130 	 */
3131 	memcg->move_charge_at_immigrate = val;
3132 	return 0;
3133 }
3134 #else
mem_cgroup_move_charge_write(struct cgroup_subsys_state * css,struct cftype * cft,u64 val)3135 static int mem_cgroup_move_charge_write(struct cgroup_subsys_state *css,
3136 					struct cftype *cft, u64 val)
3137 {
3138 	return -ENOSYS;
3139 }
3140 #endif
3141 
3142 #ifdef CONFIG_NUMA
memcg_numa_stat_show(struct seq_file * m,void * v)3143 static int memcg_numa_stat_show(struct seq_file *m, void *v)
3144 {
3145 	struct numa_stat {
3146 		const char *name;
3147 		unsigned int lru_mask;
3148 	};
3149 
3150 	static const struct numa_stat stats[] = {
3151 		{ "total", LRU_ALL },
3152 		{ "file", LRU_ALL_FILE },
3153 		{ "anon", LRU_ALL_ANON },
3154 		{ "unevictable", BIT(LRU_UNEVICTABLE) },
3155 	};
3156 	const struct numa_stat *stat;
3157 	int nid;
3158 	unsigned long nr;
3159 	struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
3160 
3161 	for (stat = stats; stat < stats + ARRAY_SIZE(stats); stat++) {
3162 		nr = mem_cgroup_nr_lru_pages(memcg, stat->lru_mask);
3163 		seq_printf(m, "%s=%lu", stat->name, nr);
3164 		for_each_node_state(nid, N_MEMORY) {
3165 			nr = mem_cgroup_node_nr_lru_pages(memcg, nid,
3166 							  stat->lru_mask);
3167 			seq_printf(m, " N%d=%lu", nid, nr);
3168 		}
3169 		seq_putc(m, '\n');
3170 	}
3171 
3172 	for (stat = stats; stat < stats + ARRAY_SIZE(stats); stat++) {
3173 		struct mem_cgroup *iter;
3174 
3175 		nr = 0;
3176 		for_each_mem_cgroup_tree(iter, memcg)
3177 			nr += mem_cgroup_nr_lru_pages(iter, stat->lru_mask);
3178 		seq_printf(m, "hierarchical_%s=%lu", stat->name, nr);
3179 		for_each_node_state(nid, N_MEMORY) {
3180 			nr = 0;
3181 			for_each_mem_cgroup_tree(iter, memcg)
3182 				nr += mem_cgroup_node_nr_lru_pages(
3183 					iter, nid, stat->lru_mask);
3184 			seq_printf(m, " N%d=%lu", nid, nr);
3185 		}
3186 		seq_putc(m, '\n');
3187 	}
3188 
3189 	return 0;
3190 }
3191 #endif /* CONFIG_NUMA */
3192 
3193 /* Universal VM events cgroup1 shows, original sort order */
3194 unsigned int memcg1_events[] = {
3195 	PGPGIN,
3196 	PGPGOUT,
3197 	PGFAULT,
3198 	PGMAJFAULT,
3199 };
3200 
3201 static const char *const memcg1_event_names[] = {
3202 	"pgpgin",
3203 	"pgpgout",
3204 	"pgfault",
3205 	"pgmajfault",
3206 };
3207 
memcg_stat_show(struct seq_file * m,void * v)3208 static int memcg_stat_show(struct seq_file *m, void *v)
3209 {
3210 	struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
3211 	unsigned long memory, memsw;
3212 	struct mem_cgroup *mi;
3213 	unsigned int i;
3214 
3215 	BUILD_BUG_ON(ARRAY_SIZE(memcg1_stat_names) != ARRAY_SIZE(memcg1_stats));
3216 	BUILD_BUG_ON(ARRAY_SIZE(mem_cgroup_lru_names) != NR_LRU_LISTS);
3217 
3218 	for (i = 0; i < ARRAY_SIZE(memcg1_stats); i++) {
3219 		if (memcg1_stats[i] == MEMCG_SWAP && !do_memsw_account())
3220 			continue;
3221 		seq_printf(m, "%s %lu\n", memcg1_stat_names[i],
3222 			   memcg_page_state(memcg, memcg1_stats[i]) *
3223 			   PAGE_SIZE);
3224 	}
3225 
3226 	for (i = 0; i < ARRAY_SIZE(memcg1_events); i++)
3227 		seq_printf(m, "%s %lu\n", memcg1_event_names[i],
3228 			   memcg_sum_events(memcg, memcg1_events[i]));
3229 
3230 	for (i = 0; i < NR_LRU_LISTS; i++)
3231 		seq_printf(m, "%s %lu\n", mem_cgroup_lru_names[i],
3232 			   mem_cgroup_nr_lru_pages(memcg, BIT(i)) * PAGE_SIZE);
3233 
3234 	/* Hierarchical information */
3235 	memory = memsw = PAGE_COUNTER_MAX;
3236 	for (mi = memcg; mi; mi = parent_mem_cgroup(mi)) {
3237 		memory = min(memory, mi->memory.limit);
3238 		memsw = min(memsw, mi->memsw.limit);
3239 	}
3240 	seq_printf(m, "hierarchical_memory_limit %llu\n",
3241 		   (u64)memory * PAGE_SIZE);
3242 	if (do_memsw_account())
3243 		seq_printf(m, "hierarchical_memsw_limit %llu\n",
3244 			   (u64)memsw * PAGE_SIZE);
3245 
3246 	for (i = 0; i < ARRAY_SIZE(memcg1_stats); i++) {
3247 		unsigned long long val = 0;
3248 
3249 		if (memcg1_stats[i] == MEMCG_SWAP && !do_memsw_account())
3250 			continue;
3251 		for_each_mem_cgroup_tree(mi, memcg)
3252 			val += memcg_page_state(mi, memcg1_stats[i]) *
3253 			PAGE_SIZE;
3254 		seq_printf(m, "total_%s %llu\n", memcg1_stat_names[i], val);
3255 	}
3256 
3257 	for (i = 0; i < ARRAY_SIZE(memcg1_events); i++) {
3258 		unsigned long long val = 0;
3259 
3260 		for_each_mem_cgroup_tree(mi, memcg)
3261 			val += memcg_sum_events(mi, memcg1_events[i]);
3262 		seq_printf(m, "total_%s %llu\n", memcg1_event_names[i], val);
3263 	}
3264 
3265 	for (i = 0; i < NR_LRU_LISTS; i++) {
3266 		unsigned long long val = 0;
3267 
3268 		for_each_mem_cgroup_tree(mi, memcg)
3269 			val += mem_cgroup_nr_lru_pages(mi, BIT(i)) * PAGE_SIZE;
3270 		seq_printf(m, "total_%s %llu\n", mem_cgroup_lru_names[i], val);
3271 	}
3272 
3273 #ifdef CONFIG_DEBUG_VM
3274 	{
3275 		pg_data_t *pgdat;
3276 		struct mem_cgroup_per_node *mz;
3277 		struct zone_reclaim_stat *rstat;
3278 		unsigned long recent_rotated[2] = {0, 0};
3279 		unsigned long recent_scanned[2] = {0, 0};
3280 
3281 		for_each_online_pgdat(pgdat) {
3282 			mz = mem_cgroup_nodeinfo(memcg, pgdat->node_id);
3283 			rstat = &mz->lruvec.reclaim_stat;
3284 
3285 			recent_rotated[0] += rstat->recent_rotated[0];
3286 			recent_rotated[1] += rstat->recent_rotated[1];
3287 			recent_scanned[0] += rstat->recent_scanned[0];
3288 			recent_scanned[1] += rstat->recent_scanned[1];
3289 		}
3290 		seq_printf(m, "recent_rotated_anon %lu\n", recent_rotated[0]);
3291 		seq_printf(m, "recent_rotated_file %lu\n", recent_rotated[1]);
3292 		seq_printf(m, "recent_scanned_anon %lu\n", recent_scanned[0]);
3293 		seq_printf(m, "recent_scanned_file %lu\n", recent_scanned[1]);
3294 	}
3295 #endif
3296 
3297 	return 0;
3298 }
3299 
mem_cgroup_swappiness_read(struct cgroup_subsys_state * css,struct cftype * cft)3300 static u64 mem_cgroup_swappiness_read(struct cgroup_subsys_state *css,
3301 				      struct cftype *cft)
3302 {
3303 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
3304 
3305 	return mem_cgroup_swappiness(memcg);
3306 }
3307 
mem_cgroup_swappiness_write(struct cgroup_subsys_state * css,struct cftype * cft,u64 val)3308 static int mem_cgroup_swappiness_write(struct cgroup_subsys_state *css,
3309 				       struct cftype *cft, u64 val)
3310 {
3311 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
3312 
3313 	if (val > 100)
3314 		return -EINVAL;
3315 
3316 	if (css->parent)
3317 		memcg->swappiness = val;
3318 	else
3319 		vm_swappiness = val;
3320 
3321 	return 0;
3322 }
3323 
__mem_cgroup_threshold(struct mem_cgroup * memcg,bool swap)3324 static void __mem_cgroup_threshold(struct mem_cgroup *memcg, bool swap)
3325 {
3326 	struct mem_cgroup_threshold_ary *t;
3327 	unsigned long usage;
3328 	int i;
3329 
3330 	rcu_read_lock();
3331 	if (!swap)
3332 		t = rcu_dereference(memcg->thresholds.primary);
3333 	else
3334 		t = rcu_dereference(memcg->memsw_thresholds.primary);
3335 
3336 	if (!t)
3337 		goto unlock;
3338 
3339 	usage = mem_cgroup_usage(memcg, swap);
3340 
3341 	/*
3342 	 * current_threshold points to threshold just below or equal to usage.
3343 	 * If it's not true, a threshold was crossed after last
3344 	 * call of __mem_cgroup_threshold().
3345 	 */
3346 	i = t->current_threshold;
3347 
3348 	/*
3349 	 * Iterate backward over array of thresholds starting from
3350 	 * current_threshold and check if a threshold is crossed.
3351 	 * If none of thresholds below usage is crossed, we read
3352 	 * only one element of the array here.
3353 	 */
3354 	for (; i >= 0 && unlikely(t->entries[i].threshold > usage); i--)
3355 		eventfd_signal(t->entries[i].eventfd, 1);
3356 
3357 	/* i = current_threshold + 1 */
3358 	i++;
3359 
3360 	/*
3361 	 * Iterate forward over array of thresholds starting from
3362 	 * current_threshold+1 and check if a threshold is crossed.
3363 	 * If none of thresholds above usage is crossed, we read
3364 	 * only one element of the array here.
3365 	 */
3366 	for (; i < t->size && unlikely(t->entries[i].threshold <= usage); i++)
3367 		eventfd_signal(t->entries[i].eventfd, 1);
3368 
3369 	/* Update current_threshold */
3370 	t->current_threshold = i - 1;
3371 unlock:
3372 	rcu_read_unlock();
3373 }
3374 
mem_cgroup_threshold(struct mem_cgroup * memcg)3375 static void mem_cgroup_threshold(struct mem_cgroup *memcg)
3376 {
3377 	while (memcg) {
3378 		__mem_cgroup_threshold(memcg, false);
3379 		if (do_memsw_account())
3380 			__mem_cgroup_threshold(memcg, true);
3381 
3382 		memcg = parent_mem_cgroup(memcg);
3383 	}
3384 }
3385 
compare_thresholds(const void * a,const void * b)3386 static int compare_thresholds(const void *a, const void *b)
3387 {
3388 	const struct mem_cgroup_threshold *_a = a;
3389 	const struct mem_cgroup_threshold *_b = b;
3390 
3391 	if (_a->threshold > _b->threshold)
3392 		return 1;
3393 
3394 	if (_a->threshold < _b->threshold)
3395 		return -1;
3396 
3397 	return 0;
3398 }
3399 
mem_cgroup_oom_notify_cb(struct mem_cgroup * memcg)3400 static int mem_cgroup_oom_notify_cb(struct mem_cgroup *memcg)
3401 {
3402 	struct mem_cgroup_eventfd_list *ev;
3403 
3404 	spin_lock(&memcg_oom_lock);
3405 
3406 	list_for_each_entry(ev, &memcg->oom_notify, list)
3407 		eventfd_signal(ev->eventfd, 1);
3408 
3409 	spin_unlock(&memcg_oom_lock);
3410 	return 0;
3411 }
3412 
mem_cgroup_oom_notify(struct mem_cgroup * memcg)3413 static void mem_cgroup_oom_notify(struct mem_cgroup *memcg)
3414 {
3415 	struct mem_cgroup *iter;
3416 
3417 	for_each_mem_cgroup_tree(iter, memcg)
3418 		mem_cgroup_oom_notify_cb(iter);
3419 }
3420 
__mem_cgroup_usage_register_event(struct mem_cgroup * memcg,struct eventfd_ctx * eventfd,const char * args,enum res_type type)3421 static int __mem_cgroup_usage_register_event(struct mem_cgroup *memcg,
3422 	struct eventfd_ctx *eventfd, const char *args, enum res_type type)
3423 {
3424 	struct mem_cgroup_thresholds *thresholds;
3425 	struct mem_cgroup_threshold_ary *new;
3426 	unsigned long threshold;
3427 	unsigned long usage;
3428 	int i, size, ret;
3429 
3430 	ret = page_counter_memparse(args, "-1", &threshold);
3431 	if (ret)
3432 		return ret;
3433 
3434 	mutex_lock(&memcg->thresholds_lock);
3435 
3436 	if (type == _MEM) {
3437 		thresholds = &memcg->thresholds;
3438 		usage = mem_cgroup_usage(memcg, false);
3439 	} else if (type == _MEMSWAP) {
3440 		thresholds = &memcg->memsw_thresholds;
3441 		usage = mem_cgroup_usage(memcg, true);
3442 	} else
3443 		BUG();
3444 
3445 	/* Check if a threshold crossed before adding a new one */
3446 	if (thresholds->primary)
3447 		__mem_cgroup_threshold(memcg, type == _MEMSWAP);
3448 
3449 	size = thresholds->primary ? thresholds->primary->size + 1 : 1;
3450 
3451 	/* Allocate memory for new array of thresholds */
3452 	new = kmalloc(sizeof(*new) + size * sizeof(struct mem_cgroup_threshold),
3453 			GFP_KERNEL);
3454 	if (!new) {
3455 		ret = -ENOMEM;
3456 		goto unlock;
3457 	}
3458 	new->size = size;
3459 
3460 	/* Copy thresholds (if any) to new array */
3461 	if (thresholds->primary) {
3462 		memcpy(new->entries, thresholds->primary->entries, (size - 1) *
3463 				sizeof(struct mem_cgroup_threshold));
3464 	}
3465 
3466 	/* Add new threshold */
3467 	new->entries[size - 1].eventfd = eventfd;
3468 	new->entries[size - 1].threshold = threshold;
3469 
3470 	/* Sort thresholds. Registering of new threshold isn't time-critical */
3471 	sort(new->entries, size, sizeof(struct mem_cgroup_threshold),
3472 			compare_thresholds, NULL);
3473 
3474 	/* Find current threshold */
3475 	new->current_threshold = -1;
3476 	for (i = 0; i < size; i++) {
3477 		if (new->entries[i].threshold <= usage) {
3478 			/*
3479 			 * new->current_threshold will not be used until
3480 			 * rcu_assign_pointer(), so it's safe to increment
3481 			 * it here.
3482 			 */
3483 			++new->current_threshold;
3484 		} else
3485 			break;
3486 	}
3487 
3488 	/* Free old spare buffer and save old primary buffer as spare */
3489 	kfree(thresholds->spare);
3490 	thresholds->spare = thresholds->primary;
3491 
3492 	rcu_assign_pointer(thresholds->primary, new);
3493 
3494 	/* To be sure that nobody uses thresholds */
3495 	synchronize_rcu();
3496 
3497 unlock:
3498 	mutex_unlock(&memcg->thresholds_lock);
3499 
3500 	return ret;
3501 }
3502 
mem_cgroup_usage_register_event(struct mem_cgroup * memcg,struct eventfd_ctx * eventfd,const char * args)3503 static int mem_cgroup_usage_register_event(struct mem_cgroup *memcg,
3504 	struct eventfd_ctx *eventfd, const char *args)
3505 {
3506 	return __mem_cgroup_usage_register_event(memcg, eventfd, args, _MEM);
3507 }
3508 
memsw_cgroup_usage_register_event(struct mem_cgroup * memcg,struct eventfd_ctx * eventfd,const char * args)3509 static int memsw_cgroup_usage_register_event(struct mem_cgroup *memcg,
3510 	struct eventfd_ctx *eventfd, const char *args)
3511 {
3512 	return __mem_cgroup_usage_register_event(memcg, eventfd, args, _MEMSWAP);
3513 }
3514 
__mem_cgroup_usage_unregister_event(struct mem_cgroup * memcg,struct eventfd_ctx * eventfd,enum res_type type)3515 static void __mem_cgroup_usage_unregister_event(struct mem_cgroup *memcg,
3516 	struct eventfd_ctx *eventfd, enum res_type type)
3517 {
3518 	struct mem_cgroup_thresholds *thresholds;
3519 	struct mem_cgroup_threshold_ary *new;
3520 	unsigned long usage;
3521 	int i, j, size, entries;
3522 
3523 	mutex_lock(&memcg->thresholds_lock);
3524 
3525 	if (type == _MEM) {
3526 		thresholds = &memcg->thresholds;
3527 		usage = mem_cgroup_usage(memcg, false);
3528 	} else if (type == _MEMSWAP) {
3529 		thresholds = &memcg->memsw_thresholds;
3530 		usage = mem_cgroup_usage(memcg, true);
3531 	} else
3532 		BUG();
3533 
3534 	if (!thresholds->primary)
3535 		goto unlock;
3536 
3537 	/* Check if a threshold crossed before removing */
3538 	__mem_cgroup_threshold(memcg, type == _MEMSWAP);
3539 
3540 	/* Calculate new number of threshold */
3541 	size = entries = 0;
3542 	for (i = 0; i < thresholds->primary->size; i++) {
3543 		if (thresholds->primary->entries[i].eventfd != eventfd)
3544 			size++;
3545 		else
3546 			entries++;
3547 	}
3548 
3549 	new = thresholds->spare;
3550 
3551 	/* If no items related to eventfd have been cleared, nothing to do */
3552 	if (!entries)
3553 		goto unlock;
3554 
3555 	/* Set thresholds array to NULL if we don't have thresholds */
3556 	if (!size) {
3557 		kfree(new);
3558 		new = NULL;
3559 		goto swap_buffers;
3560 	}
3561 
3562 	new->size = size;
3563 
3564 	/* Copy thresholds and find current threshold */
3565 	new->current_threshold = -1;
3566 	for (i = 0, j = 0; i < thresholds->primary->size; i++) {
3567 		if (thresholds->primary->entries[i].eventfd == eventfd)
3568 			continue;
3569 
3570 		new->entries[j] = thresholds->primary->entries[i];
3571 		if (new->entries[j].threshold <= usage) {
3572 			/*
3573 			 * new->current_threshold will not be used
3574 			 * until rcu_assign_pointer(), so it's safe to increment
3575 			 * it here.
3576 			 */
3577 			++new->current_threshold;
3578 		}
3579 		j++;
3580 	}
3581 
3582 swap_buffers:
3583 	/* Swap primary and spare array */
3584 	thresholds->spare = thresholds->primary;
3585 
3586 	rcu_assign_pointer(thresholds->primary, new);
3587 
3588 	/* To be sure that nobody uses thresholds */
3589 	synchronize_rcu();
3590 
3591 	/* If all events are unregistered, free the spare array */
3592 	if (!new) {
3593 		kfree(thresholds->spare);
3594 		thresholds->spare = NULL;
3595 	}
3596 unlock:
3597 	mutex_unlock(&memcg->thresholds_lock);
3598 }
3599 
mem_cgroup_usage_unregister_event(struct mem_cgroup * memcg,struct eventfd_ctx * eventfd)3600 static void mem_cgroup_usage_unregister_event(struct mem_cgroup *memcg,
3601 	struct eventfd_ctx *eventfd)
3602 {
3603 	return __mem_cgroup_usage_unregister_event(memcg, eventfd, _MEM);
3604 }
3605 
memsw_cgroup_usage_unregister_event(struct mem_cgroup * memcg,struct eventfd_ctx * eventfd)3606 static void memsw_cgroup_usage_unregister_event(struct mem_cgroup *memcg,
3607 	struct eventfd_ctx *eventfd)
3608 {
3609 	return __mem_cgroup_usage_unregister_event(memcg, eventfd, _MEMSWAP);
3610 }
3611 
mem_cgroup_oom_register_event(struct mem_cgroup * memcg,struct eventfd_ctx * eventfd,const char * args)3612 static int mem_cgroup_oom_register_event(struct mem_cgroup *memcg,
3613 	struct eventfd_ctx *eventfd, const char *args)
3614 {
3615 	struct mem_cgroup_eventfd_list *event;
3616 
3617 	event = kmalloc(sizeof(*event),	GFP_KERNEL);
3618 	if (!event)
3619 		return -ENOMEM;
3620 
3621 	spin_lock(&memcg_oom_lock);
3622 
3623 	event->eventfd = eventfd;
3624 	list_add(&event->list, &memcg->oom_notify);
3625 
3626 	/* already in OOM ? */
3627 	if (memcg->under_oom)
3628 		eventfd_signal(eventfd, 1);
3629 	spin_unlock(&memcg_oom_lock);
3630 
3631 	return 0;
3632 }
3633 
mem_cgroup_oom_unregister_event(struct mem_cgroup * memcg,struct eventfd_ctx * eventfd)3634 static void mem_cgroup_oom_unregister_event(struct mem_cgroup *memcg,
3635 	struct eventfd_ctx *eventfd)
3636 {
3637 	struct mem_cgroup_eventfd_list *ev, *tmp;
3638 
3639 	spin_lock(&memcg_oom_lock);
3640 
3641 	list_for_each_entry_safe(ev, tmp, &memcg->oom_notify, list) {
3642 		if (ev->eventfd == eventfd) {
3643 			list_del(&ev->list);
3644 			kfree(ev);
3645 		}
3646 	}
3647 
3648 	spin_unlock(&memcg_oom_lock);
3649 }
3650 
mem_cgroup_oom_control_read(struct seq_file * sf,void * v)3651 static int mem_cgroup_oom_control_read(struct seq_file *sf, void *v)
3652 {
3653 	struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(sf));
3654 
3655 	seq_printf(sf, "oom_kill_disable %d\n", memcg->oom_kill_disable);
3656 	seq_printf(sf, "under_oom %d\n", (bool)memcg->under_oom);
3657 	seq_printf(sf, "oom_kill %lu\n", memcg_sum_events(memcg, OOM_KILL));
3658 	return 0;
3659 }
3660 
mem_cgroup_oom_control_write(struct cgroup_subsys_state * css,struct cftype * cft,u64 val)3661 static int mem_cgroup_oom_control_write(struct cgroup_subsys_state *css,
3662 	struct cftype *cft, u64 val)
3663 {
3664 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
3665 
3666 	/* cannot set to root cgroup and only 0 and 1 are allowed */
3667 	if (!css->parent || !((val == 0) || (val == 1)))
3668 		return -EINVAL;
3669 
3670 	memcg->oom_kill_disable = val;
3671 	if (!val)
3672 		memcg_oom_recover(memcg);
3673 
3674 	return 0;
3675 }
3676 
3677 #ifdef CONFIG_CGROUP_WRITEBACK
3678 
mem_cgroup_cgwb_list(struct mem_cgroup * memcg)3679 struct list_head *mem_cgroup_cgwb_list(struct mem_cgroup *memcg)
3680 {
3681 	return &memcg->cgwb_list;
3682 }
3683 
memcg_wb_domain_init(struct mem_cgroup * memcg,gfp_t gfp)3684 static int memcg_wb_domain_init(struct mem_cgroup *memcg, gfp_t gfp)
3685 {
3686 	return wb_domain_init(&memcg->cgwb_domain, gfp);
3687 }
3688 
memcg_wb_domain_exit(struct mem_cgroup * memcg)3689 static void memcg_wb_domain_exit(struct mem_cgroup *memcg)
3690 {
3691 	wb_domain_exit(&memcg->cgwb_domain);
3692 }
3693 
memcg_wb_domain_size_changed(struct mem_cgroup * memcg)3694 static void memcg_wb_domain_size_changed(struct mem_cgroup *memcg)
3695 {
3696 	wb_domain_size_changed(&memcg->cgwb_domain);
3697 }
3698 
mem_cgroup_wb_domain(struct bdi_writeback * wb)3699 struct wb_domain *mem_cgroup_wb_domain(struct bdi_writeback *wb)
3700 {
3701 	struct mem_cgroup *memcg = mem_cgroup_from_css(wb->memcg_css);
3702 
3703 	if (!memcg->css.parent)
3704 		return NULL;
3705 
3706 	return &memcg->cgwb_domain;
3707 }
3708 
3709 /**
3710  * mem_cgroup_wb_stats - retrieve writeback related stats from its memcg
3711  * @wb: bdi_writeback in question
3712  * @pfilepages: out parameter for number of file pages
3713  * @pheadroom: out parameter for number of allocatable pages according to memcg
3714  * @pdirty: out parameter for number of dirty pages
3715  * @pwriteback: out parameter for number of pages under writeback
3716  *
3717  * Determine the numbers of file, headroom, dirty, and writeback pages in
3718  * @wb's memcg.  File, dirty and writeback are self-explanatory.  Headroom
3719  * is a bit more involved.
3720  *
3721  * A memcg's headroom is "min(max, high) - used".  In the hierarchy, the
3722  * headroom is calculated as the lowest headroom of itself and the
3723  * ancestors.  Note that this doesn't consider the actual amount of
3724  * available memory in the system.  The caller should further cap
3725  * *@pheadroom accordingly.
3726  */
mem_cgroup_wb_stats(struct bdi_writeback * wb,unsigned long * pfilepages,unsigned long * pheadroom,unsigned long * pdirty,unsigned long * pwriteback)3727 void mem_cgroup_wb_stats(struct bdi_writeback *wb, unsigned long *pfilepages,
3728 			 unsigned long *pheadroom, unsigned long *pdirty,
3729 			 unsigned long *pwriteback)
3730 {
3731 	struct mem_cgroup *memcg = mem_cgroup_from_css(wb->memcg_css);
3732 	struct mem_cgroup *parent;
3733 
3734 	*pdirty = memcg_page_state(memcg, NR_FILE_DIRTY);
3735 
3736 	/* this should eventually include NR_UNSTABLE_NFS */
3737 	*pwriteback = memcg_page_state(memcg, NR_WRITEBACK);
3738 	*pfilepages = mem_cgroup_nr_lru_pages(memcg, (1 << LRU_INACTIVE_FILE) |
3739 						     (1 << LRU_ACTIVE_FILE));
3740 	*pheadroom = PAGE_COUNTER_MAX;
3741 
3742 	while ((parent = parent_mem_cgroup(memcg))) {
3743 		unsigned long ceiling = min(memcg->memory.limit, memcg->high);
3744 		unsigned long used = page_counter_read(&memcg->memory);
3745 
3746 		*pheadroom = min(*pheadroom, ceiling - min(ceiling, used));
3747 		memcg = parent;
3748 	}
3749 }
3750 
3751 #else	/* CONFIG_CGROUP_WRITEBACK */
3752 
memcg_wb_domain_init(struct mem_cgroup * memcg,gfp_t gfp)3753 static int memcg_wb_domain_init(struct mem_cgroup *memcg, gfp_t gfp)
3754 {
3755 	return 0;
3756 }
3757 
memcg_wb_domain_exit(struct mem_cgroup * memcg)3758 static void memcg_wb_domain_exit(struct mem_cgroup *memcg)
3759 {
3760 }
3761 
memcg_wb_domain_size_changed(struct mem_cgroup * memcg)3762 static void memcg_wb_domain_size_changed(struct mem_cgroup *memcg)
3763 {
3764 }
3765 
3766 #endif	/* CONFIG_CGROUP_WRITEBACK */
3767 
3768 /*
3769  * DO NOT USE IN NEW FILES.
3770  *
3771  * "cgroup.event_control" implementation.
3772  *
3773  * This is way over-engineered.  It tries to support fully configurable
3774  * events for each user.  Such level of flexibility is completely
3775  * unnecessary especially in the light of the planned unified hierarchy.
3776  *
3777  * Please deprecate this and replace with something simpler if at all
3778  * possible.
3779  */
3780 
3781 /*
3782  * Unregister event and free resources.
3783  *
3784  * Gets called from workqueue.
3785  */
memcg_event_remove(struct work_struct * work)3786 static void memcg_event_remove(struct work_struct *work)
3787 {
3788 	struct mem_cgroup_event *event =
3789 		container_of(work, struct mem_cgroup_event, remove);
3790 	struct mem_cgroup *memcg = event->memcg;
3791 
3792 	remove_wait_queue(event->wqh, &event->wait);
3793 
3794 	event->unregister_event(memcg, event->eventfd);
3795 
3796 	/* Notify userspace the event is going away. */
3797 	eventfd_signal(event->eventfd, 1);
3798 
3799 	eventfd_ctx_put(event->eventfd);
3800 	kfree(event);
3801 	css_put(&memcg->css);
3802 }
3803 
3804 /*
3805  * Gets called on POLLHUP on eventfd when user closes it.
3806  *
3807  * Called with wqh->lock held and interrupts disabled.
3808  */
memcg_event_wake(wait_queue_entry_t * wait,unsigned mode,int sync,void * key)3809 static int memcg_event_wake(wait_queue_entry_t *wait, unsigned mode,
3810 			    int sync, void *key)
3811 {
3812 	struct mem_cgroup_event *event =
3813 		container_of(wait, struct mem_cgroup_event, wait);
3814 	struct mem_cgroup *memcg = event->memcg;
3815 	unsigned long flags = (unsigned long)key;
3816 
3817 	if (flags & POLLHUP) {
3818 		/*
3819 		 * If the event has been detached at cgroup removal, we
3820 		 * can simply return knowing the other side will cleanup
3821 		 * for us.
3822 		 *
3823 		 * We can't race against event freeing since the other
3824 		 * side will require wqh->lock via remove_wait_queue(),
3825 		 * which we hold.
3826 		 */
3827 		spin_lock(&memcg->event_list_lock);
3828 		if (!list_empty(&event->list)) {
3829 			list_del_init(&event->list);
3830 			/*
3831 			 * We are in atomic context, but cgroup_event_remove()
3832 			 * may sleep, so we have to call it in workqueue.
3833 			 */
3834 			schedule_work(&event->remove);
3835 		}
3836 		spin_unlock(&memcg->event_list_lock);
3837 	}
3838 
3839 	return 0;
3840 }
3841 
memcg_event_ptable_queue_proc(struct file * file,wait_queue_head_t * wqh,poll_table * pt)3842 static void memcg_event_ptable_queue_proc(struct file *file,
3843 		wait_queue_head_t *wqh, poll_table *pt)
3844 {
3845 	struct mem_cgroup_event *event =
3846 		container_of(pt, struct mem_cgroup_event, pt);
3847 
3848 	event->wqh = wqh;
3849 	add_wait_queue(wqh, &event->wait);
3850 }
3851 
3852 /*
3853  * DO NOT USE IN NEW FILES.
3854  *
3855  * Parse input and register new cgroup event handler.
3856  *
3857  * Input must be in format '<event_fd> <control_fd> <args>'.
3858  * Interpretation of args is defined by control file implementation.
3859  */
memcg_write_event_control(struct kernfs_open_file * of,char * buf,size_t nbytes,loff_t off)3860 static ssize_t memcg_write_event_control(struct kernfs_open_file *of,
3861 					 char *buf, size_t nbytes, loff_t off)
3862 {
3863 	struct cgroup_subsys_state *css = of_css(of);
3864 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
3865 	struct mem_cgroup_event *event;
3866 	struct cgroup_subsys_state *cfile_css;
3867 	unsigned int efd, cfd;
3868 	struct fd efile;
3869 	struct fd cfile;
3870 	const char *name;
3871 	char *endp;
3872 	int ret;
3873 
3874 	buf = strstrip(buf);
3875 
3876 	efd = simple_strtoul(buf, &endp, 10);
3877 	if (*endp != ' ')
3878 		return -EINVAL;
3879 	buf = endp + 1;
3880 
3881 	cfd = simple_strtoul(buf, &endp, 10);
3882 	if ((*endp != ' ') && (*endp != '\0'))
3883 		return -EINVAL;
3884 	buf = endp + 1;
3885 
3886 	event = kzalloc(sizeof(*event), GFP_KERNEL);
3887 	if (!event)
3888 		return -ENOMEM;
3889 
3890 	event->memcg = memcg;
3891 	INIT_LIST_HEAD(&event->list);
3892 	init_poll_funcptr(&event->pt, memcg_event_ptable_queue_proc);
3893 	init_waitqueue_func_entry(&event->wait, memcg_event_wake);
3894 	INIT_WORK(&event->remove, memcg_event_remove);
3895 
3896 	efile = fdget(efd);
3897 	if (!efile.file) {
3898 		ret = -EBADF;
3899 		goto out_kfree;
3900 	}
3901 
3902 	event->eventfd = eventfd_ctx_fileget(efile.file);
3903 	if (IS_ERR(event->eventfd)) {
3904 		ret = PTR_ERR(event->eventfd);
3905 		goto out_put_efile;
3906 	}
3907 
3908 	cfile = fdget(cfd);
3909 	if (!cfile.file) {
3910 		ret = -EBADF;
3911 		goto out_put_eventfd;
3912 	}
3913 
3914 	/* the process need read permission on control file */
3915 	/* AV: shouldn't we check that it's been opened for read instead? */
3916 	ret = inode_permission(file_inode(cfile.file), MAY_READ);
3917 	if (ret < 0)
3918 		goto out_put_cfile;
3919 
3920 	/*
3921 	 * Determine the event callbacks and set them in @event.  This used
3922 	 * to be done via struct cftype but cgroup core no longer knows
3923 	 * about these events.  The following is crude but the whole thing
3924 	 * is for compatibility anyway.
3925 	 *
3926 	 * DO NOT ADD NEW FILES.
3927 	 */
3928 	name = cfile.file->f_path.dentry->d_name.name;
3929 
3930 	if (!strcmp(name, "memory.usage_in_bytes")) {
3931 		event->register_event = mem_cgroup_usage_register_event;
3932 		event->unregister_event = mem_cgroup_usage_unregister_event;
3933 	} else if (!strcmp(name, "memory.oom_control")) {
3934 		event->register_event = mem_cgroup_oom_register_event;
3935 		event->unregister_event = mem_cgroup_oom_unregister_event;
3936 	} else if (!strcmp(name, "memory.pressure_level")) {
3937 		event->register_event = vmpressure_register_event;
3938 		event->unregister_event = vmpressure_unregister_event;
3939 	} else if (!strcmp(name, "memory.memsw.usage_in_bytes")) {
3940 		event->register_event = memsw_cgroup_usage_register_event;
3941 		event->unregister_event = memsw_cgroup_usage_unregister_event;
3942 	} else {
3943 		ret = -EINVAL;
3944 		goto out_put_cfile;
3945 	}
3946 
3947 	/*
3948 	 * Verify @cfile should belong to @css.  Also, remaining events are
3949 	 * automatically removed on cgroup destruction but the removal is
3950 	 * asynchronous, so take an extra ref on @css.
3951 	 */
3952 	cfile_css = css_tryget_online_from_dir(cfile.file->f_path.dentry->d_parent,
3953 					       &memory_cgrp_subsys);
3954 	ret = -EINVAL;
3955 	if (IS_ERR(cfile_css))
3956 		goto out_put_cfile;
3957 	if (cfile_css != css) {
3958 		css_put(cfile_css);
3959 		goto out_put_cfile;
3960 	}
3961 
3962 	ret = event->register_event(memcg, event->eventfd, buf);
3963 	if (ret)
3964 		goto out_put_css;
3965 
3966 	efile.file->f_op->poll(efile.file, &event->pt);
3967 
3968 	spin_lock(&memcg->event_list_lock);
3969 	list_add(&event->list, &memcg->event_list);
3970 	spin_unlock(&memcg->event_list_lock);
3971 
3972 	fdput(cfile);
3973 	fdput(efile);
3974 
3975 	return nbytes;
3976 
3977 out_put_css:
3978 	css_put(css);
3979 out_put_cfile:
3980 	fdput(cfile);
3981 out_put_eventfd:
3982 	eventfd_ctx_put(event->eventfd);
3983 out_put_efile:
3984 	fdput(efile);
3985 out_kfree:
3986 	kfree(event);
3987 
3988 	return ret;
3989 }
3990 
3991 static struct cftype mem_cgroup_legacy_files[] = {
3992 	{
3993 		.name = "usage_in_bytes",
3994 		.private = MEMFILE_PRIVATE(_MEM, RES_USAGE),
3995 		.read_u64 = mem_cgroup_read_u64,
3996 	},
3997 	{
3998 		.name = "max_usage_in_bytes",
3999 		.private = MEMFILE_PRIVATE(_MEM, RES_MAX_USAGE),
4000 		.write = mem_cgroup_reset,
4001 		.read_u64 = mem_cgroup_read_u64,
4002 	},
4003 	{
4004 		.name = "limit_in_bytes",
4005 		.private = MEMFILE_PRIVATE(_MEM, RES_LIMIT),
4006 		.write = mem_cgroup_write,
4007 		.read_u64 = mem_cgroup_read_u64,
4008 	},
4009 	{
4010 		.name = "soft_limit_in_bytes",
4011 		.private = MEMFILE_PRIVATE(_MEM, RES_SOFT_LIMIT),
4012 		.write = mem_cgroup_write,
4013 		.read_u64 = mem_cgroup_read_u64,
4014 	},
4015 	{
4016 		.name = "failcnt",
4017 		.private = MEMFILE_PRIVATE(_MEM, RES_FAILCNT),
4018 		.write = mem_cgroup_reset,
4019 		.read_u64 = mem_cgroup_read_u64,
4020 	},
4021 	{
4022 		.name = "stat",
4023 		.seq_show = memcg_stat_show,
4024 	},
4025 	{
4026 		.name = "force_empty",
4027 		.write = mem_cgroup_force_empty_write,
4028 	},
4029 	{
4030 		.name = "use_hierarchy",
4031 		.write_u64 = mem_cgroup_hierarchy_write,
4032 		.read_u64 = mem_cgroup_hierarchy_read,
4033 	},
4034 	{
4035 		.name = "cgroup.event_control",		/* XXX: for compat */
4036 		.write = memcg_write_event_control,
4037 		.flags = CFTYPE_NO_PREFIX | CFTYPE_WORLD_WRITABLE,
4038 	},
4039 	{
4040 		.name = "swappiness",
4041 		.read_u64 = mem_cgroup_swappiness_read,
4042 		.write_u64 = mem_cgroup_swappiness_write,
4043 	},
4044 	{
4045 		.name = "move_charge_at_immigrate",
4046 		.read_u64 = mem_cgroup_move_charge_read,
4047 		.write_u64 = mem_cgroup_move_charge_write,
4048 	},
4049 	{
4050 		.name = "oom_control",
4051 		.seq_show = mem_cgroup_oom_control_read,
4052 		.write_u64 = mem_cgroup_oom_control_write,
4053 		.private = MEMFILE_PRIVATE(_OOM_TYPE, OOM_CONTROL),
4054 	},
4055 	{
4056 		.name = "pressure_level",
4057 	},
4058 #ifdef CONFIG_NUMA
4059 	{
4060 		.name = "numa_stat",
4061 		.seq_show = memcg_numa_stat_show,
4062 	},
4063 #endif
4064 	{
4065 		.name = "kmem.limit_in_bytes",
4066 		.private = MEMFILE_PRIVATE(_KMEM, RES_LIMIT),
4067 		.write = mem_cgroup_write,
4068 		.read_u64 = mem_cgroup_read_u64,
4069 	},
4070 	{
4071 		.name = "kmem.usage_in_bytes",
4072 		.private = MEMFILE_PRIVATE(_KMEM, RES_USAGE),
4073 		.read_u64 = mem_cgroup_read_u64,
4074 	},
4075 	{
4076 		.name = "kmem.failcnt",
4077 		.private = MEMFILE_PRIVATE(_KMEM, RES_FAILCNT),
4078 		.write = mem_cgroup_reset,
4079 		.read_u64 = mem_cgroup_read_u64,
4080 	},
4081 	{
4082 		.name = "kmem.max_usage_in_bytes",
4083 		.private = MEMFILE_PRIVATE(_KMEM, RES_MAX_USAGE),
4084 		.write = mem_cgroup_reset,
4085 		.read_u64 = mem_cgroup_read_u64,
4086 	},
4087 #ifdef CONFIG_SLABINFO
4088 	{
4089 		.name = "kmem.slabinfo",
4090 		.seq_start = memcg_slab_start,
4091 		.seq_next = memcg_slab_next,
4092 		.seq_stop = memcg_slab_stop,
4093 		.seq_show = memcg_slab_show,
4094 	},
4095 #endif
4096 	{
4097 		.name = "kmem.tcp.limit_in_bytes",
4098 		.private = MEMFILE_PRIVATE(_TCP, RES_LIMIT),
4099 		.write = mem_cgroup_write,
4100 		.read_u64 = mem_cgroup_read_u64,
4101 	},
4102 	{
4103 		.name = "kmem.tcp.usage_in_bytes",
4104 		.private = MEMFILE_PRIVATE(_TCP, RES_USAGE),
4105 		.read_u64 = mem_cgroup_read_u64,
4106 	},
4107 	{
4108 		.name = "kmem.tcp.failcnt",
4109 		.private = MEMFILE_PRIVATE(_TCP, RES_FAILCNT),
4110 		.write = mem_cgroup_reset,
4111 		.read_u64 = mem_cgroup_read_u64,
4112 	},
4113 	{
4114 		.name = "kmem.tcp.max_usage_in_bytes",
4115 		.private = MEMFILE_PRIVATE(_TCP, RES_MAX_USAGE),
4116 		.write = mem_cgroup_reset,
4117 		.read_u64 = mem_cgroup_read_u64,
4118 	},
4119 	{ },	/* terminate */
4120 };
4121 
4122 /*
4123  * Private memory cgroup IDR
4124  *
4125  * Swap-out records and page cache shadow entries need to store memcg
4126  * references in constrained space, so we maintain an ID space that is
4127  * limited to 16 bit (MEM_CGROUP_ID_MAX), limiting the total number of
4128  * memory-controlled cgroups to 64k.
4129  *
4130  * However, there usually are many references to the oflline CSS after
4131  * the cgroup has been destroyed, such as page cache or reclaimable
4132  * slab objects, that don't need to hang on to the ID. We want to keep
4133  * those dead CSS from occupying IDs, or we might quickly exhaust the
4134  * relatively small ID space and prevent the creation of new cgroups
4135  * even when there are much fewer than 64k cgroups - possibly none.
4136  *
4137  * Maintain a private 16-bit ID space for memcg, and allow the ID to
4138  * be freed and recycled when it's no longer needed, which is usually
4139  * when the CSS is offlined.
4140  *
4141  * The only exception to that are records of swapped out tmpfs/shmem
4142  * pages that need to be attributed to live ancestors on swapin. But
4143  * those references are manageable from userspace.
4144  */
4145 
4146 static DEFINE_IDR(mem_cgroup_idr);
4147 
mem_cgroup_id_remove(struct mem_cgroup * memcg)4148 static void mem_cgroup_id_remove(struct mem_cgroup *memcg)
4149 {
4150 	if (memcg->id.id > 0) {
4151 		idr_remove(&mem_cgroup_idr, memcg->id.id);
4152 		memcg->id.id = 0;
4153 	}
4154 }
4155 
mem_cgroup_id_get_many(struct mem_cgroup * memcg,unsigned int n)4156 static void mem_cgroup_id_get_many(struct mem_cgroup *memcg, unsigned int n)
4157 {
4158 	VM_BUG_ON(atomic_read(&memcg->id.ref) <= 0);
4159 	atomic_add(n, &memcg->id.ref);
4160 }
4161 
mem_cgroup_id_put_many(struct mem_cgroup * memcg,unsigned int n)4162 static void mem_cgroup_id_put_many(struct mem_cgroup *memcg, unsigned int n)
4163 {
4164 	VM_BUG_ON(atomic_read(&memcg->id.ref) < n);
4165 	if (atomic_sub_and_test(n, &memcg->id.ref)) {
4166 		mem_cgroup_id_remove(memcg);
4167 
4168 		/* Memcg ID pins CSS */
4169 		css_put(&memcg->css);
4170 	}
4171 }
4172 
mem_cgroup_id_get(struct mem_cgroup * memcg)4173 static inline void mem_cgroup_id_get(struct mem_cgroup *memcg)
4174 {
4175 	mem_cgroup_id_get_many(memcg, 1);
4176 }
4177 
mem_cgroup_id_put(struct mem_cgroup * memcg)4178 static inline void mem_cgroup_id_put(struct mem_cgroup *memcg)
4179 {
4180 	mem_cgroup_id_put_many(memcg, 1);
4181 }
4182 
4183 /**
4184  * mem_cgroup_from_id - look up a memcg from a memcg id
4185  * @id: the memcg id to look up
4186  *
4187  * Caller must hold rcu_read_lock().
4188  */
mem_cgroup_from_id(unsigned short id)4189 struct mem_cgroup *mem_cgroup_from_id(unsigned short id)
4190 {
4191 	WARN_ON_ONCE(!rcu_read_lock_held());
4192 	return idr_find(&mem_cgroup_idr, id);
4193 }
4194 
alloc_mem_cgroup_per_node_info(struct mem_cgroup * memcg,int node)4195 static int alloc_mem_cgroup_per_node_info(struct mem_cgroup *memcg, int node)
4196 {
4197 	struct mem_cgroup_per_node *pn;
4198 	int tmp = node;
4199 	/*
4200 	 * This routine is called against possible nodes.
4201 	 * But it's BUG to call kmalloc() against offline node.
4202 	 *
4203 	 * TODO: this routine can waste much memory for nodes which will
4204 	 *       never be onlined. It's better to use memory hotplug callback
4205 	 *       function.
4206 	 */
4207 	if (!node_state(node, N_NORMAL_MEMORY))
4208 		tmp = -1;
4209 	pn = kzalloc_node(sizeof(*pn), GFP_KERNEL, tmp);
4210 	if (!pn)
4211 		return 1;
4212 
4213 	pn->lruvec_stat = alloc_percpu(struct lruvec_stat);
4214 	if (!pn->lruvec_stat) {
4215 		kfree(pn);
4216 		return 1;
4217 	}
4218 
4219 	lruvec_init(&pn->lruvec);
4220 	pn->usage_in_excess = 0;
4221 	pn->on_tree = false;
4222 	pn->memcg = memcg;
4223 
4224 	memcg->nodeinfo[node] = pn;
4225 	return 0;
4226 }
4227 
free_mem_cgroup_per_node_info(struct mem_cgroup * memcg,int node)4228 static void free_mem_cgroup_per_node_info(struct mem_cgroup *memcg, int node)
4229 {
4230 	struct mem_cgroup_per_node *pn = memcg->nodeinfo[node];
4231 
4232 	if (!pn)
4233 		return;
4234 
4235 	free_percpu(pn->lruvec_stat);
4236 	kfree(pn);
4237 }
4238 
__mem_cgroup_free(struct mem_cgroup * memcg)4239 static void __mem_cgroup_free(struct mem_cgroup *memcg)
4240 {
4241 	int node;
4242 
4243 	for_each_node(node)
4244 		free_mem_cgroup_per_node_info(memcg, node);
4245 	free_percpu(memcg->stat);
4246 	kfree(memcg);
4247 }
4248 
mem_cgroup_free(struct mem_cgroup * memcg)4249 static void mem_cgroup_free(struct mem_cgroup *memcg)
4250 {
4251 	memcg_wb_domain_exit(memcg);
4252 	__mem_cgroup_free(memcg);
4253 }
4254 
mem_cgroup_alloc(void)4255 static struct mem_cgroup *mem_cgroup_alloc(void)
4256 {
4257 	struct mem_cgroup *memcg;
4258 	size_t size;
4259 	int node;
4260 
4261 	size = sizeof(struct mem_cgroup);
4262 	size += nr_node_ids * sizeof(struct mem_cgroup_per_node *);
4263 
4264 	memcg = kzalloc(size, GFP_KERNEL);
4265 	if (!memcg)
4266 		return NULL;
4267 
4268 	memcg->id.id = idr_alloc(&mem_cgroup_idr, NULL,
4269 				 1, MEM_CGROUP_ID_MAX,
4270 				 GFP_KERNEL);
4271 	if (memcg->id.id < 0)
4272 		goto fail;
4273 
4274 	memcg->stat = alloc_percpu(struct mem_cgroup_stat_cpu);
4275 	if (!memcg->stat)
4276 		goto fail;
4277 
4278 	for_each_node(node)
4279 		if (alloc_mem_cgroup_per_node_info(memcg, node))
4280 			goto fail;
4281 
4282 	if (memcg_wb_domain_init(memcg, GFP_KERNEL))
4283 		goto fail;
4284 
4285 	INIT_WORK(&memcg->high_work, high_work_func);
4286 	memcg->last_scanned_node = MAX_NUMNODES;
4287 	INIT_LIST_HEAD(&memcg->oom_notify);
4288 	mutex_init(&memcg->thresholds_lock);
4289 	spin_lock_init(&memcg->move_lock);
4290 	vmpressure_init(&memcg->vmpressure);
4291 	INIT_LIST_HEAD(&memcg->event_list);
4292 	spin_lock_init(&memcg->event_list_lock);
4293 	memcg->socket_pressure = jiffies;
4294 #ifndef CONFIG_SLOB
4295 	memcg->kmemcg_id = -1;
4296 #endif
4297 #ifdef CONFIG_CGROUP_WRITEBACK
4298 	INIT_LIST_HEAD(&memcg->cgwb_list);
4299 #endif
4300 	idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
4301 	return memcg;
4302 fail:
4303 	mem_cgroup_id_remove(memcg);
4304 	__mem_cgroup_free(memcg);
4305 	return NULL;
4306 }
4307 
4308 static struct cgroup_subsys_state * __ref
mem_cgroup_css_alloc(struct cgroup_subsys_state * parent_css)4309 mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css)
4310 {
4311 	struct mem_cgroup *parent = mem_cgroup_from_css(parent_css);
4312 	struct mem_cgroup *memcg;
4313 	long error = -ENOMEM;
4314 
4315 	memcg = mem_cgroup_alloc();
4316 	if (!memcg)
4317 		return ERR_PTR(error);
4318 
4319 	memcg->high = PAGE_COUNTER_MAX;
4320 	memcg->soft_limit = PAGE_COUNTER_MAX;
4321 	if (parent) {
4322 		memcg->swappiness = mem_cgroup_swappiness(parent);
4323 		memcg->oom_kill_disable = parent->oom_kill_disable;
4324 	}
4325 	if (parent && parent->use_hierarchy) {
4326 		memcg->use_hierarchy = true;
4327 		page_counter_init(&memcg->memory, &parent->memory);
4328 		page_counter_init(&memcg->swap, &parent->swap);
4329 		page_counter_init(&memcg->memsw, &parent->memsw);
4330 		page_counter_init(&memcg->kmem, &parent->kmem);
4331 		page_counter_init(&memcg->tcpmem, &parent->tcpmem);
4332 	} else {
4333 		page_counter_init(&memcg->memory, NULL);
4334 		page_counter_init(&memcg->swap, NULL);
4335 		page_counter_init(&memcg->memsw, NULL);
4336 		page_counter_init(&memcg->kmem, NULL);
4337 		page_counter_init(&memcg->tcpmem, NULL);
4338 		/*
4339 		 * Deeper hierachy with use_hierarchy == false doesn't make
4340 		 * much sense so let cgroup subsystem know about this
4341 		 * unfortunate state in our controller.
4342 		 */
4343 		if (parent != root_mem_cgroup)
4344 			memory_cgrp_subsys.broken_hierarchy = true;
4345 	}
4346 
4347 	/* The following stuff does not apply to the root */
4348 	if (!parent) {
4349 		root_mem_cgroup = memcg;
4350 		return &memcg->css;
4351 	}
4352 
4353 	error = memcg_online_kmem(memcg);
4354 	if (error)
4355 		goto fail;
4356 
4357 	if (cgroup_subsys_on_dfl(memory_cgrp_subsys) && !cgroup_memory_nosocket)
4358 		static_branch_inc(&memcg_sockets_enabled_key);
4359 
4360 	return &memcg->css;
4361 fail:
4362 	mem_cgroup_id_remove(memcg);
4363 	mem_cgroup_free(memcg);
4364 	return ERR_PTR(-ENOMEM);
4365 }
4366 
mem_cgroup_css_online(struct cgroup_subsys_state * css)4367 static int mem_cgroup_css_online(struct cgroup_subsys_state *css)
4368 {
4369 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4370 
4371 	/* Online state pins memcg ID, memcg ID pins CSS */
4372 	atomic_set(&memcg->id.ref, 1);
4373 	css_get(css);
4374 	return 0;
4375 }
4376 
mem_cgroup_css_offline(struct cgroup_subsys_state * css)4377 static void mem_cgroup_css_offline(struct cgroup_subsys_state *css)
4378 {
4379 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4380 	struct mem_cgroup_event *event, *tmp;
4381 
4382 	/*
4383 	 * Unregister events and notify userspace.
4384 	 * Notify userspace about cgroup removing only after rmdir of cgroup
4385 	 * directory to avoid race between userspace and kernelspace.
4386 	 */
4387 	spin_lock(&memcg->event_list_lock);
4388 	list_for_each_entry_safe(event, tmp, &memcg->event_list, list) {
4389 		list_del_init(&event->list);
4390 		schedule_work(&event->remove);
4391 	}
4392 	spin_unlock(&memcg->event_list_lock);
4393 
4394 	memcg->low = 0;
4395 
4396 	memcg_offline_kmem(memcg);
4397 	wb_memcg_offline(memcg);
4398 
4399 	mem_cgroup_id_put(memcg);
4400 }
4401 
mem_cgroup_css_released(struct cgroup_subsys_state * css)4402 static void mem_cgroup_css_released(struct cgroup_subsys_state *css)
4403 {
4404 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4405 
4406 	invalidate_reclaim_iterators(memcg);
4407 }
4408 
mem_cgroup_css_free(struct cgroup_subsys_state * css)4409 static void mem_cgroup_css_free(struct cgroup_subsys_state *css)
4410 {
4411 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4412 
4413 	if (cgroup_subsys_on_dfl(memory_cgrp_subsys) && !cgroup_memory_nosocket)
4414 		static_branch_dec(&memcg_sockets_enabled_key);
4415 
4416 	if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) && memcg->tcpmem_active)
4417 		static_branch_dec(&memcg_sockets_enabled_key);
4418 
4419 	vmpressure_cleanup(&memcg->vmpressure);
4420 	cancel_work_sync(&memcg->high_work);
4421 	mem_cgroup_remove_from_trees(memcg);
4422 	memcg_free_kmem(memcg);
4423 	mem_cgroup_free(memcg);
4424 }
4425 
4426 /**
4427  * mem_cgroup_css_reset - reset the states of a mem_cgroup
4428  * @css: the target css
4429  *
4430  * Reset the states of the mem_cgroup associated with @css.  This is
4431  * invoked when the userland requests disabling on the default hierarchy
4432  * but the memcg is pinned through dependency.  The memcg should stop
4433  * applying policies and should revert to the vanilla state as it may be
4434  * made visible again.
4435  *
4436  * The current implementation only resets the essential configurations.
4437  * This needs to be expanded to cover all the visible parts.
4438  */
mem_cgroup_css_reset(struct cgroup_subsys_state * css)4439 static void mem_cgroup_css_reset(struct cgroup_subsys_state *css)
4440 {
4441 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4442 
4443 	page_counter_limit(&memcg->memory, PAGE_COUNTER_MAX);
4444 	page_counter_limit(&memcg->swap, PAGE_COUNTER_MAX);
4445 	page_counter_limit(&memcg->memsw, PAGE_COUNTER_MAX);
4446 	page_counter_limit(&memcg->kmem, PAGE_COUNTER_MAX);
4447 	page_counter_limit(&memcg->tcpmem, PAGE_COUNTER_MAX);
4448 	memcg->low = 0;
4449 	memcg->high = PAGE_COUNTER_MAX;
4450 	memcg->soft_limit = PAGE_COUNTER_MAX;
4451 	memcg_wb_domain_size_changed(memcg);
4452 }
4453 
4454 #ifdef CONFIG_MMU
4455 /* Handlers for move charge at task migration. */
mem_cgroup_do_precharge(unsigned long count)4456 static int mem_cgroup_do_precharge(unsigned long count)
4457 {
4458 	int ret;
4459 
4460 	/* Try a single bulk charge without reclaim first, kswapd may wake */
4461 	ret = try_charge(mc.to, GFP_KERNEL & ~__GFP_DIRECT_RECLAIM, count);
4462 	if (!ret) {
4463 		mc.precharge += count;
4464 		return ret;
4465 	}
4466 
4467 	/* Try charges one by one with reclaim, but do not retry */
4468 	while (count--) {
4469 		ret = try_charge(mc.to, GFP_KERNEL | __GFP_NORETRY, 1);
4470 		if (ret)
4471 			return ret;
4472 		mc.precharge++;
4473 		cond_resched();
4474 	}
4475 	return 0;
4476 }
4477 
4478 union mc_target {
4479 	struct page	*page;
4480 	swp_entry_t	ent;
4481 };
4482 
4483 enum mc_target_type {
4484 	MC_TARGET_NONE = 0,
4485 	MC_TARGET_PAGE,
4486 	MC_TARGET_SWAP,
4487 	MC_TARGET_DEVICE,
4488 };
4489 
mc_handle_present_pte(struct vm_area_struct * vma,unsigned long addr,pte_t ptent)4490 static struct page *mc_handle_present_pte(struct vm_area_struct *vma,
4491 						unsigned long addr, pte_t ptent)
4492 {
4493 	struct page *page = _vm_normal_page(vma, addr, ptent, true);
4494 
4495 	if (!page || !page_mapped(page))
4496 		return NULL;
4497 	if (PageAnon(page)) {
4498 		if (!(mc.flags & MOVE_ANON))
4499 			return NULL;
4500 	} else {
4501 		if (!(mc.flags & MOVE_FILE))
4502 			return NULL;
4503 	}
4504 	if (!get_page_unless_zero(page))
4505 		return NULL;
4506 
4507 	return page;
4508 }
4509 
4510 #if defined(CONFIG_SWAP) || defined(CONFIG_DEVICE_PRIVATE)
mc_handle_swap_pte(struct vm_area_struct * vma,pte_t ptent,swp_entry_t * entry)4511 static struct page *mc_handle_swap_pte(struct vm_area_struct *vma,
4512 			pte_t ptent, swp_entry_t *entry)
4513 {
4514 	struct page *page = NULL;
4515 	swp_entry_t ent = pte_to_swp_entry(ptent);
4516 
4517 	if (!(mc.flags & MOVE_ANON) || non_swap_entry(ent))
4518 		return NULL;
4519 
4520 	/*
4521 	 * Handle MEMORY_DEVICE_PRIVATE which are ZONE_DEVICE page belonging to
4522 	 * a device and because they are not accessible by CPU they are store
4523 	 * as special swap entry in the CPU page table.
4524 	 */
4525 	if (is_device_private_entry(ent)) {
4526 		page = device_private_entry_to_page(ent);
4527 		/*
4528 		 * MEMORY_DEVICE_PRIVATE means ZONE_DEVICE page and which have
4529 		 * a refcount of 1 when free (unlike normal page)
4530 		 */
4531 		if (!page_ref_add_unless(page, 1, 1))
4532 			return NULL;
4533 		return page;
4534 	}
4535 
4536 	/*
4537 	 * Because lookup_swap_cache() updates some statistics counter,
4538 	 * we call find_get_page() with swapper_space directly.
4539 	 */
4540 	page = find_get_page(swap_address_space(ent), swp_offset(ent));
4541 	if (do_memsw_account())
4542 		entry->val = ent.val;
4543 
4544 	return page;
4545 }
4546 #else
mc_handle_swap_pte(struct vm_area_struct * vma,pte_t ptent,swp_entry_t * entry)4547 static struct page *mc_handle_swap_pte(struct vm_area_struct *vma,
4548 			pte_t ptent, swp_entry_t *entry)
4549 {
4550 	return NULL;
4551 }
4552 #endif
4553 
mc_handle_file_pte(struct vm_area_struct * vma,unsigned long addr,pte_t ptent,swp_entry_t * entry)4554 static struct page *mc_handle_file_pte(struct vm_area_struct *vma,
4555 			unsigned long addr, pte_t ptent, swp_entry_t *entry)
4556 {
4557 	struct page *page = NULL;
4558 	struct address_space *mapping;
4559 	pgoff_t pgoff;
4560 
4561 	if (!vma->vm_file) /* anonymous vma */
4562 		return NULL;
4563 	if (!(mc.flags & MOVE_FILE))
4564 		return NULL;
4565 
4566 	mapping = vma->vm_file->f_mapping;
4567 	pgoff = linear_page_index(vma, addr);
4568 
4569 	/* page is moved even if it's not RSS of this task(page-faulted). */
4570 #ifdef CONFIG_SWAP
4571 	/* shmem/tmpfs may report page out on swap: account for that too. */
4572 	if (shmem_mapping(mapping)) {
4573 		page = find_get_entry(mapping, pgoff);
4574 		if (radix_tree_exceptional_entry(page)) {
4575 			swp_entry_t swp = radix_to_swp_entry(page);
4576 			if (do_memsw_account())
4577 				*entry = swp;
4578 			page = find_get_page(swap_address_space(swp),
4579 					     swp_offset(swp));
4580 		}
4581 	} else
4582 		page = find_get_page(mapping, pgoff);
4583 #else
4584 	page = find_get_page(mapping, pgoff);
4585 #endif
4586 	return page;
4587 }
4588 
4589 /**
4590  * mem_cgroup_move_account - move account of the page
4591  * @page: the page
4592  * @compound: charge the page as compound or small page
4593  * @from: mem_cgroup which the page is moved from.
4594  * @to:	mem_cgroup which the page is moved to. @from != @to.
4595  *
4596  * The caller must make sure the page is not on LRU (isolate_page() is useful.)
4597  *
4598  * This function doesn't do "charge" to new cgroup and doesn't do "uncharge"
4599  * from old cgroup.
4600  */
mem_cgroup_move_account(struct page * page,bool compound,struct mem_cgroup * from,struct mem_cgroup * to)4601 static int mem_cgroup_move_account(struct page *page,
4602 				   bool compound,
4603 				   struct mem_cgroup *from,
4604 				   struct mem_cgroup *to)
4605 {
4606 	unsigned long flags;
4607 	unsigned int nr_pages = compound ? hpage_nr_pages(page) : 1;
4608 	int ret;
4609 	bool anon;
4610 
4611 	VM_BUG_ON(from == to);
4612 	VM_BUG_ON_PAGE(PageLRU(page), page);
4613 	VM_BUG_ON(compound && !PageTransHuge(page));
4614 
4615 	/*
4616 	 * Prevent mem_cgroup_migrate() from looking at
4617 	 * page->mem_cgroup of its source page while we change it.
4618 	 */
4619 	ret = -EBUSY;
4620 	if (!trylock_page(page))
4621 		goto out;
4622 
4623 	ret = -EINVAL;
4624 	if (page->mem_cgroup != from)
4625 		goto out_unlock;
4626 
4627 	anon = PageAnon(page);
4628 
4629 	spin_lock_irqsave(&from->move_lock, flags);
4630 
4631 	if (!anon && page_mapped(page)) {
4632 		__this_cpu_sub(from->stat->count[NR_FILE_MAPPED], nr_pages);
4633 		__this_cpu_add(to->stat->count[NR_FILE_MAPPED], nr_pages);
4634 	}
4635 
4636 	/*
4637 	 * move_lock grabbed above and caller set from->moving_account, so
4638 	 * mod_memcg_page_state will serialize updates to PageDirty.
4639 	 * So mapping should be stable for dirty pages.
4640 	 */
4641 	if (!anon && PageDirty(page)) {
4642 		struct address_space *mapping = page_mapping(page);
4643 
4644 		if (mapping_cap_account_dirty(mapping)) {
4645 			__this_cpu_sub(from->stat->count[NR_FILE_DIRTY],
4646 				       nr_pages);
4647 			__this_cpu_add(to->stat->count[NR_FILE_DIRTY],
4648 				       nr_pages);
4649 		}
4650 	}
4651 
4652 	if (PageWriteback(page)) {
4653 		__this_cpu_sub(from->stat->count[NR_WRITEBACK], nr_pages);
4654 		__this_cpu_add(to->stat->count[NR_WRITEBACK], nr_pages);
4655 	}
4656 
4657 	/*
4658 	 * It is safe to change page->mem_cgroup here because the page
4659 	 * is referenced, charged, and isolated - we can't race with
4660 	 * uncharging, charging, migration, or LRU putback.
4661 	 */
4662 
4663 	/* caller should have done css_get */
4664 	page->mem_cgroup = to;
4665 	spin_unlock_irqrestore(&from->move_lock, flags);
4666 
4667 	ret = 0;
4668 
4669 	local_irq_disable();
4670 	mem_cgroup_charge_statistics(to, page, compound, nr_pages);
4671 	memcg_check_events(to, page);
4672 	mem_cgroup_charge_statistics(from, page, compound, -nr_pages);
4673 	memcg_check_events(from, page);
4674 	local_irq_enable();
4675 out_unlock:
4676 	unlock_page(page);
4677 out:
4678 	return ret;
4679 }
4680 
4681 /**
4682  * get_mctgt_type - get target type of moving charge
4683  * @vma: the vma the pte to be checked belongs
4684  * @addr: the address corresponding to the pte to be checked
4685  * @ptent: the pte to be checked
4686  * @target: the pointer the target page or swap ent will be stored(can be NULL)
4687  *
4688  * Returns
4689  *   0(MC_TARGET_NONE): if the pte is not a target for move charge.
4690  *   1(MC_TARGET_PAGE): if the page corresponding to this pte is a target for
4691  *     move charge. if @target is not NULL, the page is stored in target->page
4692  *     with extra refcnt got(Callers should handle it).
4693  *   2(MC_TARGET_SWAP): if the swap entry corresponding to this pte is a
4694  *     target for charge migration. if @target is not NULL, the entry is stored
4695  *     in target->ent.
4696  *   3(MC_TARGET_DEVICE): like MC_TARGET_PAGE  but page is MEMORY_DEVICE_PUBLIC
4697  *     or MEMORY_DEVICE_PRIVATE (so ZONE_DEVICE page and thus not on the lru).
4698  *     For now we such page is charge like a regular page would be as for all
4699  *     intent and purposes it is just special memory taking the place of a
4700  *     regular page.
4701  *
4702  *     See Documentations/vm/hmm.txt and include/linux/hmm.h
4703  *
4704  * Called with pte lock held.
4705  */
4706 
get_mctgt_type(struct vm_area_struct * vma,unsigned long addr,pte_t ptent,union mc_target * target)4707 static enum mc_target_type get_mctgt_type(struct vm_area_struct *vma,
4708 		unsigned long addr, pte_t ptent, union mc_target *target)
4709 {
4710 	struct page *page = NULL;
4711 	enum mc_target_type ret = MC_TARGET_NONE;
4712 	swp_entry_t ent = { .val = 0 };
4713 
4714 	if (pte_present(ptent))
4715 		page = mc_handle_present_pte(vma, addr, ptent);
4716 	else if (is_swap_pte(ptent))
4717 		page = mc_handle_swap_pte(vma, ptent, &ent);
4718 	else if (pte_none(ptent))
4719 		page = mc_handle_file_pte(vma, addr, ptent, &ent);
4720 
4721 	if (!page && !ent.val)
4722 		return ret;
4723 	if (page) {
4724 		/*
4725 		 * Do only loose check w/o serialization.
4726 		 * mem_cgroup_move_account() checks the page is valid or
4727 		 * not under LRU exclusion.
4728 		 */
4729 		if (page->mem_cgroup == mc.from) {
4730 			ret = MC_TARGET_PAGE;
4731 			if (is_device_private_page(page) ||
4732 			    is_device_public_page(page))
4733 				ret = MC_TARGET_DEVICE;
4734 			if (target)
4735 				target->page = page;
4736 		}
4737 		if (!ret || !target)
4738 			put_page(page);
4739 	}
4740 	/*
4741 	 * There is a swap entry and a page doesn't exist or isn't charged.
4742 	 * But we cannot move a tail-page in a THP.
4743 	 */
4744 	if (ent.val && !ret && (!page || !PageTransCompound(page)) &&
4745 	    mem_cgroup_id(mc.from) == lookup_swap_cgroup_id(ent)) {
4746 		ret = MC_TARGET_SWAP;
4747 		if (target)
4748 			target->ent = ent;
4749 	}
4750 	return ret;
4751 }
4752 
4753 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
4754 /*
4755  * We don't consider PMD mapped swapping or file mapped pages because THP does
4756  * not support them for now.
4757  * Caller should make sure that pmd_trans_huge(pmd) is true.
4758  */
get_mctgt_type_thp(struct vm_area_struct * vma,unsigned long addr,pmd_t pmd,union mc_target * target)4759 static enum mc_target_type get_mctgt_type_thp(struct vm_area_struct *vma,
4760 		unsigned long addr, pmd_t pmd, union mc_target *target)
4761 {
4762 	struct page *page = NULL;
4763 	enum mc_target_type ret = MC_TARGET_NONE;
4764 
4765 	if (unlikely(is_swap_pmd(pmd))) {
4766 		VM_BUG_ON(thp_migration_supported() &&
4767 				  !is_pmd_migration_entry(pmd));
4768 		return ret;
4769 	}
4770 	page = pmd_page(pmd);
4771 	VM_BUG_ON_PAGE(!page || !PageHead(page), page);
4772 	if (!(mc.flags & MOVE_ANON))
4773 		return ret;
4774 	if (page->mem_cgroup == mc.from) {
4775 		ret = MC_TARGET_PAGE;
4776 		if (target) {
4777 			get_page(page);
4778 			target->page = page;
4779 		}
4780 	}
4781 	return ret;
4782 }
4783 #else
get_mctgt_type_thp(struct vm_area_struct * vma,unsigned long addr,pmd_t pmd,union mc_target * target)4784 static inline enum mc_target_type get_mctgt_type_thp(struct vm_area_struct *vma,
4785 		unsigned long addr, pmd_t pmd, union mc_target *target)
4786 {
4787 	return MC_TARGET_NONE;
4788 }
4789 #endif
4790 
mem_cgroup_count_precharge_pte_range(pmd_t * pmd,unsigned long addr,unsigned long end,struct mm_walk * walk)4791 static int mem_cgroup_count_precharge_pte_range(pmd_t *pmd,
4792 					unsigned long addr, unsigned long end,
4793 					struct mm_walk *walk)
4794 {
4795 	struct vm_area_struct *vma = walk->vma;
4796 	pte_t *pte;
4797 	spinlock_t *ptl;
4798 
4799 	ptl = pmd_trans_huge_lock(pmd, vma);
4800 	if (ptl) {
4801 		/*
4802 		 * Note their can not be MC_TARGET_DEVICE for now as we do not
4803 		 * support transparent huge page with MEMORY_DEVICE_PUBLIC or
4804 		 * MEMORY_DEVICE_PRIVATE but this might change.
4805 		 */
4806 		if (get_mctgt_type_thp(vma, addr, *pmd, NULL) == MC_TARGET_PAGE)
4807 			mc.precharge += HPAGE_PMD_NR;
4808 		spin_unlock(ptl);
4809 		return 0;
4810 	}
4811 
4812 	if (pmd_trans_unstable(pmd))
4813 		return 0;
4814 	pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
4815 	for (; addr != end; pte++, addr += PAGE_SIZE)
4816 		if (get_mctgt_type(vma, addr, *pte, NULL))
4817 			mc.precharge++;	/* increment precharge temporarily */
4818 	pte_unmap_unlock(pte - 1, ptl);
4819 	cond_resched();
4820 
4821 	return 0;
4822 }
4823 
mem_cgroup_count_precharge(struct mm_struct * mm)4824 static unsigned long mem_cgroup_count_precharge(struct mm_struct *mm)
4825 {
4826 	unsigned long precharge;
4827 
4828 	struct mm_walk mem_cgroup_count_precharge_walk = {
4829 		.pmd_entry = mem_cgroup_count_precharge_pte_range,
4830 		.mm = mm,
4831 	};
4832 	down_read(&mm->mmap_sem);
4833 	walk_page_range(0, mm->highest_vm_end,
4834 			&mem_cgroup_count_precharge_walk);
4835 	up_read(&mm->mmap_sem);
4836 
4837 	precharge = mc.precharge;
4838 	mc.precharge = 0;
4839 
4840 	return precharge;
4841 }
4842 
mem_cgroup_precharge_mc(struct mm_struct * mm)4843 static int mem_cgroup_precharge_mc(struct mm_struct *mm)
4844 {
4845 	unsigned long precharge = mem_cgroup_count_precharge(mm);
4846 
4847 	VM_BUG_ON(mc.moving_task);
4848 	mc.moving_task = current;
4849 	return mem_cgroup_do_precharge(precharge);
4850 }
4851 
4852 /* cancels all extra charges on mc.from and mc.to, and wakes up all waiters. */
__mem_cgroup_clear_mc(void)4853 static void __mem_cgroup_clear_mc(void)
4854 {
4855 	struct mem_cgroup *from = mc.from;
4856 	struct mem_cgroup *to = mc.to;
4857 
4858 	/* we must uncharge all the leftover precharges from mc.to */
4859 	if (mc.precharge) {
4860 		cancel_charge(mc.to, mc.precharge);
4861 		mc.precharge = 0;
4862 	}
4863 	/*
4864 	 * we didn't uncharge from mc.from at mem_cgroup_move_account(), so
4865 	 * we must uncharge here.
4866 	 */
4867 	if (mc.moved_charge) {
4868 		cancel_charge(mc.from, mc.moved_charge);
4869 		mc.moved_charge = 0;
4870 	}
4871 	/* we must fixup refcnts and charges */
4872 	if (mc.moved_swap) {
4873 		/* uncharge swap account from the old cgroup */
4874 		if (!mem_cgroup_is_root(mc.from))
4875 			page_counter_uncharge(&mc.from->memsw, mc.moved_swap);
4876 
4877 		mem_cgroup_id_put_many(mc.from, mc.moved_swap);
4878 
4879 		/*
4880 		 * we charged both to->memory and to->memsw, so we
4881 		 * should uncharge to->memory.
4882 		 */
4883 		if (!mem_cgroup_is_root(mc.to))
4884 			page_counter_uncharge(&mc.to->memory, mc.moved_swap);
4885 
4886 		mem_cgroup_id_get_many(mc.to, mc.moved_swap);
4887 		css_put_many(&mc.to->css, mc.moved_swap);
4888 
4889 		mc.moved_swap = 0;
4890 	}
4891 	memcg_oom_recover(from);
4892 	memcg_oom_recover(to);
4893 	wake_up_all(&mc.waitq);
4894 }
4895 
mem_cgroup_clear_mc(void)4896 static void mem_cgroup_clear_mc(void)
4897 {
4898 	struct mm_struct *mm = mc.mm;
4899 
4900 	/*
4901 	 * we must clear moving_task before waking up waiters at the end of
4902 	 * task migration.
4903 	 */
4904 	mc.moving_task = NULL;
4905 	__mem_cgroup_clear_mc();
4906 	spin_lock(&mc.lock);
4907 	mc.from = NULL;
4908 	mc.to = NULL;
4909 	mc.mm = NULL;
4910 	spin_unlock(&mc.lock);
4911 
4912 	mmput(mm);
4913 }
4914 
mem_cgroup_can_attach(struct cgroup_taskset * tset)4915 static int mem_cgroup_can_attach(struct cgroup_taskset *tset)
4916 {
4917 	struct cgroup_subsys_state *css;
4918 	struct mem_cgroup *memcg = NULL; /* unneeded init to make gcc happy */
4919 	struct mem_cgroup *from;
4920 	struct task_struct *leader, *p;
4921 	struct mm_struct *mm;
4922 	unsigned long move_flags;
4923 	int ret = 0;
4924 
4925 	/* charge immigration isn't supported on the default hierarchy */
4926 	if (cgroup_subsys_on_dfl(memory_cgrp_subsys))
4927 		return 0;
4928 
4929 	/*
4930 	 * Multi-process migrations only happen on the default hierarchy
4931 	 * where charge immigration is not used.  Perform charge
4932 	 * immigration if @tset contains a leader and whine if there are
4933 	 * multiple.
4934 	 */
4935 	p = NULL;
4936 	cgroup_taskset_for_each_leader(leader, css, tset) {
4937 		WARN_ON_ONCE(p);
4938 		p = leader;
4939 		memcg = mem_cgroup_from_css(css);
4940 	}
4941 	if (!p)
4942 		return 0;
4943 
4944 	/*
4945 	 * We are now commited to this value whatever it is. Changes in this
4946 	 * tunable will only affect upcoming migrations, not the current one.
4947 	 * So we need to save it, and keep it going.
4948 	 */
4949 	move_flags = READ_ONCE(memcg->move_charge_at_immigrate);
4950 	if (!move_flags)
4951 		return 0;
4952 
4953 	from = mem_cgroup_from_task(p);
4954 
4955 	VM_BUG_ON(from == memcg);
4956 
4957 	mm = get_task_mm(p);
4958 	if (!mm)
4959 		return 0;
4960 	/* We move charges only when we move a owner of the mm */
4961 	if (mm->owner == p) {
4962 		VM_BUG_ON(mc.from);
4963 		VM_BUG_ON(mc.to);
4964 		VM_BUG_ON(mc.precharge);
4965 		VM_BUG_ON(mc.moved_charge);
4966 		VM_BUG_ON(mc.moved_swap);
4967 
4968 		spin_lock(&mc.lock);
4969 		mc.mm = mm;
4970 		mc.from = from;
4971 		mc.to = memcg;
4972 		mc.flags = move_flags;
4973 		spin_unlock(&mc.lock);
4974 		/* We set mc.moving_task later */
4975 
4976 		ret = mem_cgroup_precharge_mc(mm);
4977 		if (ret)
4978 			mem_cgroup_clear_mc();
4979 	} else {
4980 		mmput(mm);
4981 	}
4982 	return ret;
4983 }
4984 
mem_cgroup_cancel_attach(struct cgroup_taskset * tset)4985 static void mem_cgroup_cancel_attach(struct cgroup_taskset *tset)
4986 {
4987 	if (mc.to)
4988 		mem_cgroup_clear_mc();
4989 }
4990 
mem_cgroup_move_charge_pte_range(pmd_t * pmd,unsigned long addr,unsigned long end,struct mm_walk * walk)4991 static int mem_cgroup_move_charge_pte_range(pmd_t *pmd,
4992 				unsigned long addr, unsigned long end,
4993 				struct mm_walk *walk)
4994 {
4995 	int ret = 0;
4996 	struct vm_area_struct *vma = walk->vma;
4997 	pte_t *pte;
4998 	spinlock_t *ptl;
4999 	enum mc_target_type target_type;
5000 	union mc_target target;
5001 	struct page *page;
5002 
5003 	ptl = pmd_trans_huge_lock(pmd, vma);
5004 	if (ptl) {
5005 		if (mc.precharge < HPAGE_PMD_NR) {
5006 			spin_unlock(ptl);
5007 			return 0;
5008 		}
5009 		target_type = get_mctgt_type_thp(vma, addr, *pmd, &target);
5010 		if (target_type == MC_TARGET_PAGE) {
5011 			page = target.page;
5012 			if (!isolate_lru_page(page)) {
5013 				if (!mem_cgroup_move_account(page, true,
5014 							     mc.from, mc.to)) {
5015 					mc.precharge -= HPAGE_PMD_NR;
5016 					mc.moved_charge += HPAGE_PMD_NR;
5017 				}
5018 				putback_lru_page(page);
5019 			}
5020 			put_page(page);
5021 		} else if (target_type == MC_TARGET_DEVICE) {
5022 			page = target.page;
5023 			if (!mem_cgroup_move_account(page, true,
5024 						     mc.from, mc.to)) {
5025 				mc.precharge -= HPAGE_PMD_NR;
5026 				mc.moved_charge += HPAGE_PMD_NR;
5027 			}
5028 			put_page(page);
5029 		}
5030 		spin_unlock(ptl);
5031 		return 0;
5032 	}
5033 
5034 	if (pmd_trans_unstable(pmd))
5035 		return 0;
5036 retry:
5037 	pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
5038 	for (; addr != end; addr += PAGE_SIZE) {
5039 		pte_t ptent = *(pte++);
5040 		bool device = false;
5041 		swp_entry_t ent;
5042 
5043 		if (!mc.precharge)
5044 			break;
5045 
5046 		switch (get_mctgt_type(vma, addr, ptent, &target)) {
5047 		case MC_TARGET_DEVICE:
5048 			device = true;
5049 			/* fall through */
5050 		case MC_TARGET_PAGE:
5051 			page = target.page;
5052 			/*
5053 			 * We can have a part of the split pmd here. Moving it
5054 			 * can be done but it would be too convoluted so simply
5055 			 * ignore such a partial THP and keep it in original
5056 			 * memcg. There should be somebody mapping the head.
5057 			 */
5058 			if (PageTransCompound(page))
5059 				goto put;
5060 			if (!device && isolate_lru_page(page))
5061 				goto put;
5062 			if (!mem_cgroup_move_account(page, false,
5063 						mc.from, mc.to)) {
5064 				mc.precharge--;
5065 				/* we uncharge from mc.from later. */
5066 				mc.moved_charge++;
5067 			}
5068 			if (!device)
5069 				putback_lru_page(page);
5070 put:			/* get_mctgt_type() gets the page */
5071 			put_page(page);
5072 			break;
5073 		case MC_TARGET_SWAP:
5074 			ent = target.ent;
5075 			if (!mem_cgroup_move_swap_account(ent, mc.from, mc.to)) {
5076 				mc.precharge--;
5077 				/* we fixup refcnts and charges later. */
5078 				mc.moved_swap++;
5079 			}
5080 			break;
5081 		default:
5082 			break;
5083 		}
5084 	}
5085 	pte_unmap_unlock(pte - 1, ptl);
5086 	cond_resched();
5087 
5088 	if (addr != end) {
5089 		/*
5090 		 * We have consumed all precharges we got in can_attach().
5091 		 * We try charge one by one, but don't do any additional
5092 		 * charges to mc.to if we have failed in charge once in attach()
5093 		 * phase.
5094 		 */
5095 		ret = mem_cgroup_do_precharge(1);
5096 		if (!ret)
5097 			goto retry;
5098 	}
5099 
5100 	return ret;
5101 }
5102 
mem_cgroup_move_charge(void)5103 static void mem_cgroup_move_charge(void)
5104 {
5105 	struct mm_walk mem_cgroup_move_charge_walk = {
5106 		.pmd_entry = mem_cgroup_move_charge_pte_range,
5107 		.mm = mc.mm,
5108 	};
5109 
5110 	lru_add_drain_all();
5111 	/*
5112 	 * Signal lock_page_memcg() to take the memcg's move_lock
5113 	 * while we're moving its pages to another memcg. Then wait
5114 	 * for already started RCU-only updates to finish.
5115 	 */
5116 	atomic_inc(&mc.from->moving_account);
5117 	synchronize_rcu();
5118 retry:
5119 	if (unlikely(!down_read_trylock(&mc.mm->mmap_sem))) {
5120 		/*
5121 		 * Someone who are holding the mmap_sem might be waiting in
5122 		 * waitq. So we cancel all extra charges, wake up all waiters,
5123 		 * and retry. Because we cancel precharges, we might not be able
5124 		 * to move enough charges, but moving charge is a best-effort
5125 		 * feature anyway, so it wouldn't be a big problem.
5126 		 */
5127 		__mem_cgroup_clear_mc();
5128 		cond_resched();
5129 		goto retry;
5130 	}
5131 	/*
5132 	 * When we have consumed all precharges and failed in doing
5133 	 * additional charge, the page walk just aborts.
5134 	 */
5135 	walk_page_range(0, mc.mm->highest_vm_end, &mem_cgroup_move_charge_walk);
5136 
5137 	up_read(&mc.mm->mmap_sem);
5138 	atomic_dec(&mc.from->moving_account);
5139 }
5140 
mem_cgroup_move_task(void)5141 static void mem_cgroup_move_task(void)
5142 {
5143 	if (mc.to) {
5144 		mem_cgroup_move_charge();
5145 		mem_cgroup_clear_mc();
5146 	}
5147 }
5148 #else	/* !CONFIG_MMU */
mem_cgroup_can_attach(struct cgroup_taskset * tset)5149 static int mem_cgroup_can_attach(struct cgroup_taskset *tset)
5150 {
5151 	return 0;
5152 }
mem_cgroup_cancel_attach(struct cgroup_taskset * tset)5153 static void mem_cgroup_cancel_attach(struct cgroup_taskset *tset)
5154 {
5155 }
mem_cgroup_move_task(void)5156 static void mem_cgroup_move_task(void)
5157 {
5158 }
5159 #endif
5160 
5161 /*
5162  * Cgroup retains root cgroups across [un]mount cycles making it necessary
5163  * to verify whether we're attached to the default hierarchy on each mount
5164  * attempt.
5165  */
mem_cgroup_bind(struct cgroup_subsys_state * root_css)5166 static void mem_cgroup_bind(struct cgroup_subsys_state *root_css)
5167 {
5168 	/*
5169 	 * use_hierarchy is forced on the default hierarchy.  cgroup core
5170 	 * guarantees that @root doesn't have any children, so turning it
5171 	 * on for the root memcg is enough.
5172 	 */
5173 	if (cgroup_subsys_on_dfl(memory_cgrp_subsys))
5174 		root_mem_cgroup->use_hierarchy = true;
5175 	else
5176 		root_mem_cgroup->use_hierarchy = false;
5177 }
5178 
memory_current_read(struct cgroup_subsys_state * css,struct cftype * cft)5179 static u64 memory_current_read(struct cgroup_subsys_state *css,
5180 			       struct cftype *cft)
5181 {
5182 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
5183 
5184 	return (u64)page_counter_read(&memcg->memory) * PAGE_SIZE;
5185 }
5186 
memory_low_show(struct seq_file * m,void * v)5187 static int memory_low_show(struct seq_file *m, void *v)
5188 {
5189 	struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
5190 	unsigned long low = READ_ONCE(memcg->low);
5191 
5192 	if (low == PAGE_COUNTER_MAX)
5193 		seq_puts(m, "max\n");
5194 	else
5195 		seq_printf(m, "%llu\n", (u64)low * PAGE_SIZE);
5196 
5197 	return 0;
5198 }
5199 
memory_low_write(struct kernfs_open_file * of,char * buf,size_t nbytes,loff_t off)5200 static ssize_t memory_low_write(struct kernfs_open_file *of,
5201 				char *buf, size_t nbytes, loff_t off)
5202 {
5203 	struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
5204 	unsigned long low;
5205 	int err;
5206 
5207 	buf = strstrip(buf);
5208 	err = page_counter_memparse(buf, "max", &low);
5209 	if (err)
5210 		return err;
5211 
5212 	memcg->low = low;
5213 
5214 	return nbytes;
5215 }
5216 
memory_high_show(struct seq_file * m,void * v)5217 static int memory_high_show(struct seq_file *m, void *v)
5218 {
5219 	struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
5220 	unsigned long high = READ_ONCE(memcg->high);
5221 
5222 	if (high == PAGE_COUNTER_MAX)
5223 		seq_puts(m, "max\n");
5224 	else
5225 		seq_printf(m, "%llu\n", (u64)high * PAGE_SIZE);
5226 
5227 	return 0;
5228 }
5229 
memory_high_write(struct kernfs_open_file * of,char * buf,size_t nbytes,loff_t off)5230 static ssize_t memory_high_write(struct kernfs_open_file *of,
5231 				 char *buf, size_t nbytes, loff_t off)
5232 {
5233 	struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
5234 	unsigned long nr_pages;
5235 	unsigned long high;
5236 	int err;
5237 
5238 	buf = strstrip(buf);
5239 	err = page_counter_memparse(buf, "max", &high);
5240 	if (err)
5241 		return err;
5242 
5243 	memcg->high = high;
5244 
5245 	nr_pages = page_counter_read(&memcg->memory);
5246 	if (nr_pages > high)
5247 		try_to_free_mem_cgroup_pages(memcg, nr_pages - high,
5248 					     GFP_KERNEL, true);
5249 
5250 	memcg_wb_domain_size_changed(memcg);
5251 	return nbytes;
5252 }
5253 
memory_max_show(struct seq_file * m,void * v)5254 static int memory_max_show(struct seq_file *m, void *v)
5255 {
5256 	struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
5257 	unsigned long max = READ_ONCE(memcg->memory.limit);
5258 
5259 	if (max == PAGE_COUNTER_MAX)
5260 		seq_puts(m, "max\n");
5261 	else
5262 		seq_printf(m, "%llu\n", (u64)max * PAGE_SIZE);
5263 
5264 	return 0;
5265 }
5266 
memory_max_write(struct kernfs_open_file * of,char * buf,size_t nbytes,loff_t off)5267 static ssize_t memory_max_write(struct kernfs_open_file *of,
5268 				char *buf, size_t nbytes, loff_t off)
5269 {
5270 	struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
5271 	unsigned int nr_reclaims = MEM_CGROUP_RECLAIM_RETRIES;
5272 	bool drained = false;
5273 	unsigned long max;
5274 	int err;
5275 
5276 	buf = strstrip(buf);
5277 	err = page_counter_memparse(buf, "max", &max);
5278 	if (err)
5279 		return err;
5280 
5281 	xchg(&memcg->memory.limit, max);
5282 
5283 	for (;;) {
5284 		unsigned long nr_pages = page_counter_read(&memcg->memory);
5285 
5286 		if (nr_pages <= max)
5287 			break;
5288 
5289 		if (signal_pending(current)) {
5290 			err = -EINTR;
5291 			break;
5292 		}
5293 
5294 		if (!drained) {
5295 			drain_all_stock(memcg);
5296 			drained = true;
5297 			continue;
5298 		}
5299 
5300 		if (nr_reclaims) {
5301 			if (!try_to_free_mem_cgroup_pages(memcg, nr_pages - max,
5302 							  GFP_KERNEL, true))
5303 				nr_reclaims--;
5304 			continue;
5305 		}
5306 
5307 		mem_cgroup_event(memcg, MEMCG_OOM);
5308 		if (!mem_cgroup_out_of_memory(memcg, GFP_KERNEL, 0))
5309 			break;
5310 	}
5311 
5312 	memcg_wb_domain_size_changed(memcg);
5313 	return nbytes;
5314 }
5315 
memory_events_show(struct seq_file * m,void * v)5316 static int memory_events_show(struct seq_file *m, void *v)
5317 {
5318 	struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
5319 
5320 	seq_printf(m, "low %lu\n", memcg_sum_events(memcg, MEMCG_LOW));
5321 	seq_printf(m, "high %lu\n", memcg_sum_events(memcg, MEMCG_HIGH));
5322 	seq_printf(m, "max %lu\n", memcg_sum_events(memcg, MEMCG_MAX));
5323 	seq_printf(m, "oom %lu\n", memcg_sum_events(memcg, MEMCG_OOM));
5324 	seq_printf(m, "oom_kill %lu\n", memcg_sum_events(memcg, OOM_KILL));
5325 
5326 	return 0;
5327 }
5328 
memory_stat_show(struct seq_file * m,void * v)5329 static int memory_stat_show(struct seq_file *m, void *v)
5330 {
5331 	struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
5332 	unsigned long stat[MEMCG_NR_STAT];
5333 	unsigned long events[MEMCG_NR_EVENTS];
5334 	int i;
5335 
5336 	/*
5337 	 * Provide statistics on the state of the memory subsystem as
5338 	 * well as cumulative event counters that show past behavior.
5339 	 *
5340 	 * This list is ordered following a combination of these gradients:
5341 	 * 1) generic big picture -> specifics and details
5342 	 * 2) reflecting userspace activity -> reflecting kernel heuristics
5343 	 *
5344 	 * Current memory state:
5345 	 */
5346 
5347 	tree_stat(memcg, stat);
5348 	tree_events(memcg, events);
5349 
5350 	seq_printf(m, "anon %llu\n",
5351 		   (u64)stat[MEMCG_RSS] * PAGE_SIZE);
5352 	seq_printf(m, "file %llu\n",
5353 		   (u64)stat[MEMCG_CACHE] * PAGE_SIZE);
5354 	seq_printf(m, "kernel_stack %llu\n",
5355 		   (u64)stat[MEMCG_KERNEL_STACK_KB] * 1024);
5356 	seq_printf(m, "slab %llu\n",
5357 		   (u64)(stat[NR_SLAB_RECLAIMABLE] +
5358 			 stat[NR_SLAB_UNRECLAIMABLE]) * PAGE_SIZE);
5359 	seq_printf(m, "sock %llu\n",
5360 		   (u64)stat[MEMCG_SOCK] * PAGE_SIZE);
5361 
5362 	seq_printf(m, "shmem %llu\n",
5363 		   (u64)stat[NR_SHMEM] * PAGE_SIZE);
5364 	seq_printf(m, "file_mapped %llu\n",
5365 		   (u64)stat[NR_FILE_MAPPED] * PAGE_SIZE);
5366 	seq_printf(m, "file_dirty %llu\n",
5367 		   (u64)stat[NR_FILE_DIRTY] * PAGE_SIZE);
5368 	seq_printf(m, "file_writeback %llu\n",
5369 		   (u64)stat[NR_WRITEBACK] * PAGE_SIZE);
5370 
5371 	for (i = 0; i < NR_LRU_LISTS; i++) {
5372 		struct mem_cgroup *mi;
5373 		unsigned long val = 0;
5374 
5375 		for_each_mem_cgroup_tree(mi, memcg)
5376 			val += mem_cgroup_nr_lru_pages(mi, BIT(i));
5377 		seq_printf(m, "%s %llu\n",
5378 			   mem_cgroup_lru_names[i], (u64)val * PAGE_SIZE);
5379 	}
5380 
5381 	seq_printf(m, "slab_reclaimable %llu\n",
5382 		   (u64)stat[NR_SLAB_RECLAIMABLE] * PAGE_SIZE);
5383 	seq_printf(m, "slab_unreclaimable %llu\n",
5384 		   (u64)stat[NR_SLAB_UNRECLAIMABLE] * PAGE_SIZE);
5385 
5386 	/* Accumulated memory events */
5387 
5388 	seq_printf(m, "pgfault %lu\n", events[PGFAULT]);
5389 	seq_printf(m, "pgmajfault %lu\n", events[PGMAJFAULT]);
5390 
5391 	seq_printf(m, "pgrefill %lu\n", events[PGREFILL]);
5392 	seq_printf(m, "pgscan %lu\n", events[PGSCAN_KSWAPD] +
5393 		   events[PGSCAN_DIRECT]);
5394 	seq_printf(m, "pgsteal %lu\n", events[PGSTEAL_KSWAPD] +
5395 		   events[PGSTEAL_DIRECT]);
5396 	seq_printf(m, "pgactivate %lu\n", events[PGACTIVATE]);
5397 	seq_printf(m, "pgdeactivate %lu\n", events[PGDEACTIVATE]);
5398 	seq_printf(m, "pglazyfree %lu\n", events[PGLAZYFREE]);
5399 	seq_printf(m, "pglazyfreed %lu\n", events[PGLAZYFREED]);
5400 
5401 	seq_printf(m, "workingset_refault %lu\n",
5402 		   stat[WORKINGSET_REFAULT]);
5403 	seq_printf(m, "workingset_activate %lu\n",
5404 		   stat[WORKINGSET_ACTIVATE]);
5405 	seq_printf(m, "workingset_nodereclaim %lu\n",
5406 		   stat[WORKINGSET_NODERECLAIM]);
5407 
5408 	return 0;
5409 }
5410 
5411 static struct cftype memory_files[] = {
5412 	{
5413 		.name = "current",
5414 		.flags = CFTYPE_NOT_ON_ROOT,
5415 		.read_u64 = memory_current_read,
5416 	},
5417 	{
5418 		.name = "low",
5419 		.flags = CFTYPE_NOT_ON_ROOT,
5420 		.seq_show = memory_low_show,
5421 		.write = memory_low_write,
5422 	},
5423 	{
5424 		.name = "high",
5425 		.flags = CFTYPE_NOT_ON_ROOT,
5426 		.seq_show = memory_high_show,
5427 		.write = memory_high_write,
5428 	},
5429 	{
5430 		.name = "max",
5431 		.flags = CFTYPE_NOT_ON_ROOT,
5432 		.seq_show = memory_max_show,
5433 		.write = memory_max_write,
5434 	},
5435 	{
5436 		.name = "events",
5437 		.flags = CFTYPE_NOT_ON_ROOT,
5438 		.file_offset = offsetof(struct mem_cgroup, events_file),
5439 		.seq_show = memory_events_show,
5440 	},
5441 	{
5442 		.name = "stat",
5443 		.flags = CFTYPE_NOT_ON_ROOT,
5444 		.seq_show = memory_stat_show,
5445 	},
5446 	{ }	/* terminate */
5447 };
5448 
5449 struct cgroup_subsys memory_cgrp_subsys = {
5450 	.css_alloc = mem_cgroup_css_alloc,
5451 	.css_online = mem_cgroup_css_online,
5452 	.css_offline = mem_cgroup_css_offline,
5453 	.css_released = mem_cgroup_css_released,
5454 	.css_free = mem_cgroup_css_free,
5455 	.css_reset = mem_cgroup_css_reset,
5456 	.can_attach = mem_cgroup_can_attach,
5457 	.cancel_attach = mem_cgroup_cancel_attach,
5458 	.post_attach = mem_cgroup_move_task,
5459 	.bind = mem_cgroup_bind,
5460 	.dfl_cftypes = memory_files,
5461 	.legacy_cftypes = mem_cgroup_legacy_files,
5462 	.early_init = 0,
5463 };
5464 
5465 /**
5466  * mem_cgroup_low - check if memory consumption is below the normal range
5467  * @root: the top ancestor of the sub-tree being checked
5468  * @memcg: the memory cgroup to check
5469  *
5470  * Returns %true if memory consumption of @memcg, and that of all
5471  * ancestors up to (but not including) @root, is below the normal range.
5472  *
5473  * @root is exclusive; it is never low when looked at directly and isn't
5474  * checked when traversing the hierarchy.
5475  *
5476  * Excluding @root enables using memory.low to prioritize memory usage
5477  * between cgroups within a subtree of the hierarchy that is limited by
5478  * memory.high or memory.max.
5479  *
5480  * For example, given cgroup A with children B and C:
5481  *
5482  *    A
5483  *   / \
5484  *  B   C
5485  *
5486  * and
5487  *
5488  *  1. A/memory.current > A/memory.high
5489  *  2. A/B/memory.current < A/B/memory.low
5490  *  3. A/C/memory.current >= A/C/memory.low
5491  *
5492  * As 'A' is high, i.e. triggers reclaim from 'A', and 'B' is low, we
5493  * should reclaim from 'C' until 'A' is no longer high or until we can
5494  * no longer reclaim from 'C'.  If 'A', i.e. @root, isn't excluded by
5495  * mem_cgroup_low when reclaming from 'A', then 'B' won't be considered
5496  * low and we will reclaim indiscriminately from both 'B' and 'C'.
5497  */
mem_cgroup_low(struct mem_cgroup * root,struct mem_cgroup * memcg)5498 bool mem_cgroup_low(struct mem_cgroup *root, struct mem_cgroup *memcg)
5499 {
5500 	if (mem_cgroup_disabled())
5501 		return false;
5502 
5503 	if (!root)
5504 		root = root_mem_cgroup;
5505 	if (memcg == root)
5506 		return false;
5507 
5508 	for (; memcg != root; memcg = parent_mem_cgroup(memcg)) {
5509 		if (page_counter_read(&memcg->memory) >= memcg->low)
5510 			return false;
5511 	}
5512 
5513 	return true;
5514 }
5515 
5516 /**
5517  * mem_cgroup_try_charge - try charging a page
5518  * @page: page to charge
5519  * @mm: mm context of the victim
5520  * @gfp_mask: reclaim mode
5521  * @memcgp: charged memcg return
5522  * @compound: charge the page as compound or small page
5523  *
5524  * Try to charge @page to the memcg that @mm belongs to, reclaiming
5525  * pages according to @gfp_mask if necessary.
5526  *
5527  * Returns 0 on success, with *@memcgp pointing to the charged memcg.
5528  * Otherwise, an error code is returned.
5529  *
5530  * After page->mapping has been set up, the caller must finalize the
5531  * charge with mem_cgroup_commit_charge().  Or abort the transaction
5532  * with mem_cgroup_cancel_charge() in case page instantiation fails.
5533  */
mem_cgroup_try_charge(struct page * page,struct mm_struct * mm,gfp_t gfp_mask,struct mem_cgroup ** memcgp,bool compound)5534 int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm,
5535 			  gfp_t gfp_mask, struct mem_cgroup **memcgp,
5536 			  bool compound)
5537 {
5538 	struct mem_cgroup *memcg = NULL;
5539 	unsigned int nr_pages = compound ? hpage_nr_pages(page) : 1;
5540 	int ret = 0;
5541 
5542 	if (mem_cgroup_disabled())
5543 		goto out;
5544 
5545 	if (PageSwapCache(page)) {
5546 		/*
5547 		 * Every swap fault against a single page tries to charge the
5548 		 * page, bail as early as possible.  shmem_unuse() encounters
5549 		 * already charged pages, too.  The USED bit is protected by
5550 		 * the page lock, which serializes swap cache removal, which
5551 		 * in turn serializes uncharging.
5552 		 */
5553 		VM_BUG_ON_PAGE(!PageLocked(page), page);
5554 		if (compound_head(page)->mem_cgroup)
5555 			goto out;
5556 
5557 		if (do_swap_account) {
5558 			swp_entry_t ent = { .val = page_private(page), };
5559 			unsigned short id = lookup_swap_cgroup_id(ent);
5560 
5561 			rcu_read_lock();
5562 			memcg = mem_cgroup_from_id(id);
5563 			if (memcg && !css_tryget_online(&memcg->css))
5564 				memcg = NULL;
5565 			rcu_read_unlock();
5566 		}
5567 	}
5568 
5569 	if (!memcg)
5570 		memcg = get_mem_cgroup_from_mm(mm);
5571 
5572 	ret = try_charge(memcg, gfp_mask, nr_pages);
5573 
5574 	css_put(&memcg->css);
5575 out:
5576 	*memcgp = memcg;
5577 	return ret;
5578 }
5579 
5580 /**
5581  * mem_cgroup_commit_charge - commit a page charge
5582  * @page: page to charge
5583  * @memcg: memcg to charge the page to
5584  * @lrucare: page might be on LRU already
5585  * @compound: charge the page as compound or small page
5586  *
5587  * Finalize a charge transaction started by mem_cgroup_try_charge(),
5588  * after page->mapping has been set up.  This must happen atomically
5589  * as part of the page instantiation, i.e. under the page table lock
5590  * for anonymous pages, under the page lock for page and swap cache.
5591  *
5592  * In addition, the page must not be on the LRU during the commit, to
5593  * prevent racing with task migration.  If it might be, use @lrucare.
5594  *
5595  * Use mem_cgroup_cancel_charge() to cancel the transaction instead.
5596  */
mem_cgroup_commit_charge(struct page * page,struct mem_cgroup * memcg,bool lrucare,bool compound)5597 void mem_cgroup_commit_charge(struct page *page, struct mem_cgroup *memcg,
5598 			      bool lrucare, bool compound)
5599 {
5600 	unsigned int nr_pages = compound ? hpage_nr_pages(page) : 1;
5601 
5602 	VM_BUG_ON_PAGE(!page->mapping, page);
5603 	VM_BUG_ON_PAGE(PageLRU(page) && !lrucare, page);
5604 
5605 	if (mem_cgroup_disabled())
5606 		return;
5607 	/*
5608 	 * Swap faults will attempt to charge the same page multiple
5609 	 * times.  But reuse_swap_page() might have removed the page
5610 	 * from swapcache already, so we can't check PageSwapCache().
5611 	 */
5612 	if (!memcg)
5613 		return;
5614 
5615 	commit_charge(page, memcg, lrucare);
5616 
5617 	local_irq_disable();
5618 	mem_cgroup_charge_statistics(memcg, page, compound, nr_pages);
5619 	memcg_check_events(memcg, page);
5620 	local_irq_enable();
5621 
5622 	if (do_memsw_account() && PageSwapCache(page)) {
5623 		swp_entry_t entry = { .val = page_private(page) };
5624 		/*
5625 		 * The swap entry might not get freed for a long time,
5626 		 * let's not wait for it.  The page already received a
5627 		 * memory+swap charge, drop the swap entry duplicate.
5628 		 */
5629 		mem_cgroup_uncharge_swap(entry, nr_pages);
5630 	}
5631 }
5632 
5633 /**
5634  * mem_cgroup_cancel_charge - cancel a page charge
5635  * @page: page to charge
5636  * @memcg: memcg to charge the page to
5637  * @compound: charge the page as compound or small page
5638  *
5639  * Cancel a charge transaction started by mem_cgroup_try_charge().
5640  */
mem_cgroup_cancel_charge(struct page * page,struct mem_cgroup * memcg,bool compound)5641 void mem_cgroup_cancel_charge(struct page *page, struct mem_cgroup *memcg,
5642 		bool compound)
5643 {
5644 	unsigned int nr_pages = compound ? hpage_nr_pages(page) : 1;
5645 
5646 	if (mem_cgroup_disabled())
5647 		return;
5648 	/*
5649 	 * Swap faults will attempt to charge the same page multiple
5650 	 * times.  But reuse_swap_page() might have removed the page
5651 	 * from swapcache already, so we can't check PageSwapCache().
5652 	 */
5653 	if (!memcg)
5654 		return;
5655 
5656 	cancel_charge(memcg, nr_pages);
5657 }
5658 
5659 struct uncharge_gather {
5660 	struct mem_cgroup *memcg;
5661 	unsigned long pgpgout;
5662 	unsigned long nr_anon;
5663 	unsigned long nr_file;
5664 	unsigned long nr_kmem;
5665 	unsigned long nr_huge;
5666 	unsigned long nr_shmem;
5667 	struct page *dummy_page;
5668 };
5669 
uncharge_gather_clear(struct uncharge_gather * ug)5670 static inline void uncharge_gather_clear(struct uncharge_gather *ug)
5671 {
5672 	memset(ug, 0, sizeof(*ug));
5673 }
5674 
uncharge_batch(const struct uncharge_gather * ug)5675 static void uncharge_batch(const struct uncharge_gather *ug)
5676 {
5677 	unsigned long nr_pages = ug->nr_anon + ug->nr_file + ug->nr_kmem;
5678 	unsigned long flags;
5679 
5680 	if (!mem_cgroup_is_root(ug->memcg)) {
5681 		page_counter_uncharge(&ug->memcg->memory, nr_pages);
5682 		if (do_memsw_account())
5683 			page_counter_uncharge(&ug->memcg->memsw, nr_pages);
5684 		if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) && ug->nr_kmem)
5685 			page_counter_uncharge(&ug->memcg->kmem, ug->nr_kmem);
5686 		memcg_oom_recover(ug->memcg);
5687 	}
5688 
5689 	local_irq_save(flags);
5690 	__this_cpu_sub(ug->memcg->stat->count[MEMCG_RSS], ug->nr_anon);
5691 	__this_cpu_sub(ug->memcg->stat->count[MEMCG_CACHE], ug->nr_file);
5692 	__this_cpu_sub(ug->memcg->stat->count[MEMCG_RSS_HUGE], ug->nr_huge);
5693 	__this_cpu_sub(ug->memcg->stat->count[NR_SHMEM], ug->nr_shmem);
5694 	__this_cpu_add(ug->memcg->stat->events[PGPGOUT], ug->pgpgout);
5695 	__this_cpu_add(ug->memcg->stat->nr_page_events, nr_pages);
5696 	memcg_check_events(ug->memcg, ug->dummy_page);
5697 	local_irq_restore(flags);
5698 
5699 	if (!mem_cgroup_is_root(ug->memcg))
5700 		css_put_many(&ug->memcg->css, nr_pages);
5701 }
5702 
uncharge_page(struct page * page,struct uncharge_gather * ug)5703 static void uncharge_page(struct page *page, struct uncharge_gather *ug)
5704 {
5705 	VM_BUG_ON_PAGE(PageLRU(page), page);
5706 	VM_BUG_ON_PAGE(page_count(page) && !is_zone_device_page(page) &&
5707 			!PageHWPoison(page) , page);
5708 
5709 	if (!page->mem_cgroup)
5710 		return;
5711 
5712 	/*
5713 	 * Nobody should be changing or seriously looking at
5714 	 * page->mem_cgroup at this point, we have fully
5715 	 * exclusive access to the page.
5716 	 */
5717 
5718 	if (ug->memcg != page->mem_cgroup) {
5719 		if (ug->memcg) {
5720 			uncharge_batch(ug);
5721 			uncharge_gather_clear(ug);
5722 		}
5723 		ug->memcg = page->mem_cgroup;
5724 	}
5725 
5726 	if (!PageKmemcg(page)) {
5727 		unsigned int nr_pages = 1;
5728 
5729 		if (PageTransHuge(page)) {
5730 			nr_pages <<= compound_order(page);
5731 			ug->nr_huge += nr_pages;
5732 		}
5733 		if (PageAnon(page))
5734 			ug->nr_anon += nr_pages;
5735 		else {
5736 			ug->nr_file += nr_pages;
5737 			if (PageSwapBacked(page))
5738 				ug->nr_shmem += nr_pages;
5739 		}
5740 		ug->pgpgout++;
5741 	} else {
5742 		ug->nr_kmem += 1 << compound_order(page);
5743 		__ClearPageKmemcg(page);
5744 	}
5745 
5746 	ug->dummy_page = page;
5747 	page->mem_cgroup = NULL;
5748 }
5749 
uncharge_list(struct list_head * page_list)5750 static void uncharge_list(struct list_head *page_list)
5751 {
5752 	struct uncharge_gather ug;
5753 	struct list_head *next;
5754 
5755 	uncharge_gather_clear(&ug);
5756 
5757 	/*
5758 	 * Note that the list can be a single page->lru; hence the
5759 	 * do-while loop instead of a simple list_for_each_entry().
5760 	 */
5761 	next = page_list->next;
5762 	do {
5763 		struct page *page;
5764 
5765 		page = list_entry(next, struct page, lru);
5766 		next = page->lru.next;
5767 
5768 		uncharge_page(page, &ug);
5769 	} while (next != page_list);
5770 
5771 	if (ug.memcg)
5772 		uncharge_batch(&ug);
5773 }
5774 
5775 /**
5776  * mem_cgroup_uncharge - uncharge a page
5777  * @page: page to uncharge
5778  *
5779  * Uncharge a page previously charged with mem_cgroup_try_charge() and
5780  * mem_cgroup_commit_charge().
5781  */
mem_cgroup_uncharge(struct page * page)5782 void mem_cgroup_uncharge(struct page *page)
5783 {
5784 	struct uncharge_gather ug;
5785 
5786 	if (mem_cgroup_disabled())
5787 		return;
5788 
5789 	/* Don't touch page->lru of any random page, pre-check: */
5790 	if (!page->mem_cgroup)
5791 		return;
5792 
5793 	uncharge_gather_clear(&ug);
5794 	uncharge_page(page, &ug);
5795 	uncharge_batch(&ug);
5796 }
5797 
5798 /**
5799  * mem_cgroup_uncharge_list - uncharge a list of page
5800  * @page_list: list of pages to uncharge
5801  *
5802  * Uncharge a list of pages previously charged with
5803  * mem_cgroup_try_charge() and mem_cgroup_commit_charge().
5804  */
mem_cgroup_uncharge_list(struct list_head * page_list)5805 void mem_cgroup_uncharge_list(struct list_head *page_list)
5806 {
5807 	if (mem_cgroup_disabled())
5808 		return;
5809 
5810 	if (!list_empty(page_list))
5811 		uncharge_list(page_list);
5812 }
5813 
5814 /**
5815  * mem_cgroup_migrate - charge a page's replacement
5816  * @oldpage: currently circulating page
5817  * @newpage: replacement page
5818  *
5819  * Charge @newpage as a replacement page for @oldpage. @oldpage will
5820  * be uncharged upon free.
5821  *
5822  * Both pages must be locked, @newpage->mapping must be set up.
5823  */
mem_cgroup_migrate(struct page * oldpage,struct page * newpage)5824 void mem_cgroup_migrate(struct page *oldpage, struct page *newpage)
5825 {
5826 	struct mem_cgroup *memcg;
5827 	unsigned int nr_pages;
5828 	bool compound;
5829 	unsigned long flags;
5830 
5831 	VM_BUG_ON_PAGE(!PageLocked(oldpage), oldpage);
5832 	VM_BUG_ON_PAGE(!PageLocked(newpage), newpage);
5833 	VM_BUG_ON_PAGE(PageAnon(oldpage) != PageAnon(newpage), newpage);
5834 	VM_BUG_ON_PAGE(PageTransHuge(oldpage) != PageTransHuge(newpage),
5835 		       newpage);
5836 
5837 	if (mem_cgroup_disabled())
5838 		return;
5839 
5840 	/* Page cache replacement: new page already charged? */
5841 	if (newpage->mem_cgroup)
5842 		return;
5843 
5844 	/* Swapcache readahead pages can get replaced before being charged */
5845 	memcg = oldpage->mem_cgroup;
5846 	if (!memcg)
5847 		return;
5848 
5849 	/* Force-charge the new page. The old one will be freed soon */
5850 	compound = PageTransHuge(newpage);
5851 	nr_pages = compound ? hpage_nr_pages(newpage) : 1;
5852 
5853 	page_counter_charge(&memcg->memory, nr_pages);
5854 	if (do_memsw_account())
5855 		page_counter_charge(&memcg->memsw, nr_pages);
5856 	css_get_many(&memcg->css, nr_pages);
5857 
5858 	commit_charge(newpage, memcg, false);
5859 
5860 	local_irq_save(flags);
5861 	mem_cgroup_charge_statistics(memcg, newpage, compound, nr_pages);
5862 	memcg_check_events(memcg, newpage);
5863 	local_irq_restore(flags);
5864 }
5865 
5866 DEFINE_STATIC_KEY_FALSE(memcg_sockets_enabled_key);
5867 EXPORT_SYMBOL(memcg_sockets_enabled_key);
5868 
mem_cgroup_sk_alloc(struct sock * sk)5869 void mem_cgroup_sk_alloc(struct sock *sk)
5870 {
5871 	struct mem_cgroup *memcg;
5872 
5873 	if (!mem_cgroup_sockets_enabled)
5874 		return;
5875 
5876 	/* Do not associate the sock with unrelated interrupted task's memcg. */
5877 	if (in_interrupt())
5878 		return;
5879 
5880 	rcu_read_lock();
5881 	memcg = mem_cgroup_from_task(current);
5882 	if (memcg == root_mem_cgroup)
5883 		goto out;
5884 	if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) && !memcg->tcpmem_active)
5885 		goto out;
5886 	if (css_tryget_online(&memcg->css))
5887 		sk->sk_memcg = memcg;
5888 out:
5889 	rcu_read_unlock();
5890 }
5891 
mem_cgroup_sk_free(struct sock * sk)5892 void mem_cgroup_sk_free(struct sock *sk)
5893 {
5894 	if (sk->sk_memcg)
5895 		css_put(&sk->sk_memcg->css);
5896 }
5897 
5898 /**
5899  * mem_cgroup_charge_skmem - charge socket memory
5900  * @memcg: memcg to charge
5901  * @nr_pages: number of pages to charge
5902  *
5903  * Charges @nr_pages to @memcg. Returns %true if the charge fit within
5904  * @memcg's configured limit, %false if the charge had to be forced.
5905  */
mem_cgroup_charge_skmem(struct mem_cgroup * memcg,unsigned int nr_pages)5906 bool mem_cgroup_charge_skmem(struct mem_cgroup *memcg, unsigned int nr_pages)
5907 {
5908 	gfp_t gfp_mask = GFP_KERNEL;
5909 
5910 	if (!cgroup_subsys_on_dfl(memory_cgrp_subsys)) {
5911 		struct page_counter *fail;
5912 
5913 		if (page_counter_try_charge(&memcg->tcpmem, nr_pages, &fail)) {
5914 			memcg->tcpmem_pressure = 0;
5915 			return true;
5916 		}
5917 		page_counter_charge(&memcg->tcpmem, nr_pages);
5918 		memcg->tcpmem_pressure = 1;
5919 		return false;
5920 	}
5921 
5922 	/* Don't block in the packet receive path */
5923 	if (in_softirq())
5924 		gfp_mask = GFP_NOWAIT;
5925 
5926 	this_cpu_add(memcg->stat->count[MEMCG_SOCK], nr_pages);
5927 
5928 	if (try_charge(memcg, gfp_mask, nr_pages) == 0)
5929 		return true;
5930 
5931 	try_charge(memcg, gfp_mask|__GFP_NOFAIL, nr_pages);
5932 	return false;
5933 }
5934 
5935 /**
5936  * mem_cgroup_uncharge_skmem - uncharge socket memory
5937  * @memcg - memcg to uncharge
5938  * @nr_pages - number of pages to uncharge
5939  */
mem_cgroup_uncharge_skmem(struct mem_cgroup * memcg,unsigned int nr_pages)5940 void mem_cgroup_uncharge_skmem(struct mem_cgroup *memcg, unsigned int nr_pages)
5941 {
5942 	if (!cgroup_subsys_on_dfl(memory_cgrp_subsys)) {
5943 		page_counter_uncharge(&memcg->tcpmem, nr_pages);
5944 		return;
5945 	}
5946 
5947 	this_cpu_sub(memcg->stat->count[MEMCG_SOCK], nr_pages);
5948 
5949 	refill_stock(memcg, nr_pages);
5950 }
5951 
cgroup_memory(char * s)5952 static int __init cgroup_memory(char *s)
5953 {
5954 	char *token;
5955 
5956 	while ((token = strsep(&s, ",")) != NULL) {
5957 		if (!*token)
5958 			continue;
5959 		if (!strcmp(token, "nosocket"))
5960 			cgroup_memory_nosocket = true;
5961 		if (!strcmp(token, "nokmem"))
5962 			cgroup_memory_nokmem = true;
5963 	}
5964 	return 0;
5965 }
5966 __setup("cgroup.memory=", cgroup_memory);
5967 
5968 /*
5969  * subsys_initcall() for memory controller.
5970  *
5971  * Some parts like memcg_hotplug_cpu_dead() have to be initialized from this
5972  * context because of lock dependencies (cgroup_lock -> cpu hotplug) but
5973  * basically everything that doesn't depend on a specific mem_cgroup structure
5974  * should be initialized from here.
5975  */
mem_cgroup_init(void)5976 static int __init mem_cgroup_init(void)
5977 {
5978 	int cpu, node;
5979 
5980 #ifndef CONFIG_SLOB
5981 	/*
5982 	 * Kmem cache creation is mostly done with the slab_mutex held,
5983 	 * so use a workqueue with limited concurrency to avoid stalling
5984 	 * all worker threads in case lots of cgroups are created and
5985 	 * destroyed simultaneously.
5986 	 */
5987 	memcg_kmem_cache_wq = alloc_workqueue("memcg_kmem_cache", 0, 1);
5988 	BUG_ON(!memcg_kmem_cache_wq);
5989 #endif
5990 
5991 	cpuhp_setup_state_nocalls(CPUHP_MM_MEMCQ_DEAD, "mm/memctrl:dead", NULL,
5992 				  memcg_hotplug_cpu_dead);
5993 
5994 	for_each_possible_cpu(cpu)
5995 		INIT_WORK(&per_cpu_ptr(&memcg_stock, cpu)->work,
5996 			  drain_local_stock);
5997 
5998 	for_each_node(node) {
5999 		struct mem_cgroup_tree_per_node *rtpn;
6000 
6001 		rtpn = kzalloc_node(sizeof(*rtpn), GFP_KERNEL,
6002 				    node_online(node) ? node : NUMA_NO_NODE);
6003 
6004 		rtpn->rb_root = RB_ROOT;
6005 		rtpn->rb_rightmost = NULL;
6006 		spin_lock_init(&rtpn->lock);
6007 		soft_limit_tree.rb_tree_per_node[node] = rtpn;
6008 	}
6009 
6010 	return 0;
6011 }
6012 subsys_initcall(mem_cgroup_init);
6013 
6014 #ifdef CONFIG_MEMCG_SWAP
mem_cgroup_id_get_online(struct mem_cgroup * memcg)6015 static struct mem_cgroup *mem_cgroup_id_get_online(struct mem_cgroup *memcg)
6016 {
6017 	while (!atomic_inc_not_zero(&memcg->id.ref)) {
6018 		/*
6019 		 * The root cgroup cannot be destroyed, so it's refcount must
6020 		 * always be >= 1.
6021 		 */
6022 		if (WARN_ON_ONCE(memcg == root_mem_cgroup)) {
6023 			VM_BUG_ON(1);
6024 			break;
6025 		}
6026 		memcg = parent_mem_cgroup(memcg);
6027 		if (!memcg)
6028 			memcg = root_mem_cgroup;
6029 	}
6030 	return memcg;
6031 }
6032 
6033 /**
6034  * mem_cgroup_swapout - transfer a memsw charge to swap
6035  * @page: page whose memsw charge to transfer
6036  * @entry: swap entry to move the charge to
6037  *
6038  * Transfer the memsw charge of @page to @entry.
6039  */
mem_cgroup_swapout(struct page * page,swp_entry_t entry)6040 void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
6041 {
6042 	struct mem_cgroup *memcg, *swap_memcg;
6043 	unsigned int nr_entries;
6044 	unsigned short oldid;
6045 
6046 	VM_BUG_ON_PAGE(PageLRU(page), page);
6047 	VM_BUG_ON_PAGE(page_count(page), page);
6048 
6049 	if (!do_memsw_account())
6050 		return;
6051 
6052 	memcg = page->mem_cgroup;
6053 
6054 	/* Readahead page, never charged */
6055 	if (!memcg)
6056 		return;
6057 
6058 	/*
6059 	 * In case the memcg owning these pages has been offlined and doesn't
6060 	 * have an ID allocated to it anymore, charge the closest online
6061 	 * ancestor for the swap instead and transfer the memory+swap charge.
6062 	 */
6063 	swap_memcg = mem_cgroup_id_get_online(memcg);
6064 	nr_entries = hpage_nr_pages(page);
6065 	/* Get references for the tail pages, too */
6066 	if (nr_entries > 1)
6067 		mem_cgroup_id_get_many(swap_memcg, nr_entries - 1);
6068 	oldid = swap_cgroup_record(entry, mem_cgroup_id(swap_memcg),
6069 				   nr_entries);
6070 	VM_BUG_ON_PAGE(oldid, page);
6071 	mem_cgroup_swap_statistics(swap_memcg, nr_entries);
6072 
6073 	page->mem_cgroup = NULL;
6074 
6075 	if (!mem_cgroup_is_root(memcg))
6076 		page_counter_uncharge(&memcg->memory, nr_entries);
6077 
6078 	if (memcg != swap_memcg) {
6079 		if (!mem_cgroup_is_root(swap_memcg))
6080 			page_counter_charge(&swap_memcg->memsw, nr_entries);
6081 		page_counter_uncharge(&memcg->memsw, nr_entries);
6082 	}
6083 
6084 	/*
6085 	 * Interrupts should be disabled here because the caller holds the
6086 	 * mapping->tree_lock lock which is taken with interrupts-off. It is
6087 	 * important here to have the interrupts disabled because it is the
6088 	 * only synchronisation we have for udpating the per-CPU variables.
6089 	 */
6090 	VM_BUG_ON(!irqs_disabled());
6091 	mem_cgroup_charge_statistics(memcg, page, PageTransHuge(page),
6092 				     -nr_entries);
6093 	memcg_check_events(memcg, page);
6094 
6095 	if (!mem_cgroup_is_root(memcg))
6096 		css_put_many(&memcg->css, nr_entries);
6097 }
6098 
6099 /**
6100  * mem_cgroup_try_charge_swap - try charging swap space for a page
6101  * @page: page being added to swap
6102  * @entry: swap entry to charge
6103  *
6104  * Try to charge @page's memcg for the swap space at @entry.
6105  *
6106  * Returns 0 on success, -ENOMEM on failure.
6107  */
mem_cgroup_try_charge_swap(struct page * page,swp_entry_t entry)6108 int mem_cgroup_try_charge_swap(struct page *page, swp_entry_t entry)
6109 {
6110 	unsigned int nr_pages = hpage_nr_pages(page);
6111 	struct page_counter *counter;
6112 	struct mem_cgroup *memcg;
6113 	unsigned short oldid;
6114 
6115 	if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) || !do_swap_account)
6116 		return 0;
6117 
6118 	memcg = page->mem_cgroup;
6119 
6120 	/* Readahead page, never charged */
6121 	if (!memcg)
6122 		return 0;
6123 
6124 	memcg = mem_cgroup_id_get_online(memcg);
6125 
6126 	if (!mem_cgroup_is_root(memcg) &&
6127 	    !page_counter_try_charge(&memcg->swap, nr_pages, &counter)) {
6128 		mem_cgroup_id_put(memcg);
6129 		return -ENOMEM;
6130 	}
6131 
6132 	/* Get references for the tail pages, too */
6133 	if (nr_pages > 1)
6134 		mem_cgroup_id_get_many(memcg, nr_pages - 1);
6135 	oldid = swap_cgroup_record(entry, mem_cgroup_id(memcg), nr_pages);
6136 	VM_BUG_ON_PAGE(oldid, page);
6137 	mem_cgroup_swap_statistics(memcg, nr_pages);
6138 
6139 	return 0;
6140 }
6141 
6142 /**
6143  * mem_cgroup_uncharge_swap - uncharge swap space
6144  * @entry: swap entry to uncharge
6145  * @nr_pages: the amount of swap space to uncharge
6146  */
mem_cgroup_uncharge_swap(swp_entry_t entry,unsigned int nr_pages)6147 void mem_cgroup_uncharge_swap(swp_entry_t entry, unsigned int nr_pages)
6148 {
6149 	struct mem_cgroup *memcg;
6150 	unsigned short id;
6151 
6152 	if (!do_swap_account)
6153 		return;
6154 
6155 	id = swap_cgroup_record(entry, 0, nr_pages);
6156 	rcu_read_lock();
6157 	memcg = mem_cgroup_from_id(id);
6158 	if (memcg) {
6159 		if (!mem_cgroup_is_root(memcg)) {
6160 			if (cgroup_subsys_on_dfl(memory_cgrp_subsys))
6161 				page_counter_uncharge(&memcg->swap, nr_pages);
6162 			else
6163 				page_counter_uncharge(&memcg->memsw, nr_pages);
6164 		}
6165 		mem_cgroup_swap_statistics(memcg, -nr_pages);
6166 		mem_cgroup_id_put_many(memcg, nr_pages);
6167 	}
6168 	rcu_read_unlock();
6169 }
6170 
mem_cgroup_get_nr_swap_pages(struct mem_cgroup * memcg)6171 long mem_cgroup_get_nr_swap_pages(struct mem_cgroup *memcg)
6172 {
6173 	long nr_swap_pages = get_nr_swap_pages();
6174 
6175 	if (!do_swap_account || !cgroup_subsys_on_dfl(memory_cgrp_subsys))
6176 		return nr_swap_pages;
6177 	for (; memcg != root_mem_cgroup; memcg = parent_mem_cgroup(memcg))
6178 		nr_swap_pages = min_t(long, nr_swap_pages,
6179 				      READ_ONCE(memcg->swap.limit) -
6180 				      page_counter_read(&memcg->swap));
6181 	return nr_swap_pages;
6182 }
6183 
mem_cgroup_swap_full(struct page * page)6184 bool mem_cgroup_swap_full(struct page *page)
6185 {
6186 	struct mem_cgroup *memcg;
6187 
6188 	VM_BUG_ON_PAGE(!PageLocked(page), page);
6189 
6190 	if (vm_swap_full())
6191 		return true;
6192 	if (!do_swap_account || !cgroup_subsys_on_dfl(memory_cgrp_subsys))
6193 		return false;
6194 
6195 	memcg = page->mem_cgroup;
6196 	if (!memcg)
6197 		return false;
6198 
6199 	for (; memcg != root_mem_cgroup; memcg = parent_mem_cgroup(memcg))
6200 		if (page_counter_read(&memcg->swap) * 2 >= memcg->swap.limit)
6201 			return true;
6202 
6203 	return false;
6204 }
6205 
6206 /* for remember boot option*/
6207 #ifdef CONFIG_MEMCG_SWAP_ENABLED
6208 static int really_do_swap_account __initdata = 1;
6209 #else
6210 static int really_do_swap_account __initdata;
6211 #endif
6212 
enable_swap_account(char * s)6213 static int __init enable_swap_account(char *s)
6214 {
6215 	if (!strcmp(s, "1"))
6216 		really_do_swap_account = 1;
6217 	else if (!strcmp(s, "0"))
6218 		really_do_swap_account = 0;
6219 	return 1;
6220 }
6221 __setup("swapaccount=", enable_swap_account);
6222 
swap_current_read(struct cgroup_subsys_state * css,struct cftype * cft)6223 static u64 swap_current_read(struct cgroup_subsys_state *css,
6224 			     struct cftype *cft)
6225 {
6226 	struct mem_cgroup *memcg = mem_cgroup_from_css(css);
6227 
6228 	return (u64)page_counter_read(&memcg->swap) * PAGE_SIZE;
6229 }
6230 
swap_max_show(struct seq_file * m,void * v)6231 static int swap_max_show(struct seq_file *m, void *v)
6232 {
6233 	struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
6234 	unsigned long max = READ_ONCE(memcg->swap.limit);
6235 
6236 	if (max == PAGE_COUNTER_MAX)
6237 		seq_puts(m, "max\n");
6238 	else
6239 		seq_printf(m, "%llu\n", (u64)max * PAGE_SIZE);
6240 
6241 	return 0;
6242 }
6243 
swap_max_write(struct kernfs_open_file * of,char * buf,size_t nbytes,loff_t off)6244 static ssize_t swap_max_write(struct kernfs_open_file *of,
6245 			      char *buf, size_t nbytes, loff_t off)
6246 {
6247 	struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
6248 	unsigned long max;
6249 	int err;
6250 
6251 	buf = strstrip(buf);
6252 	err = page_counter_memparse(buf, "max", &max);
6253 	if (err)
6254 		return err;
6255 
6256 	mutex_lock(&memcg_limit_mutex);
6257 	err = page_counter_limit(&memcg->swap, max);
6258 	mutex_unlock(&memcg_limit_mutex);
6259 	if (err)
6260 		return err;
6261 
6262 	return nbytes;
6263 }
6264 
6265 static struct cftype swap_files[] = {
6266 	{
6267 		.name = "swap.current",
6268 		.flags = CFTYPE_NOT_ON_ROOT,
6269 		.read_u64 = swap_current_read,
6270 	},
6271 	{
6272 		.name = "swap.max",
6273 		.flags = CFTYPE_NOT_ON_ROOT,
6274 		.seq_show = swap_max_show,
6275 		.write = swap_max_write,
6276 	},
6277 	{ }	/* terminate */
6278 };
6279 
6280 static struct cftype memsw_cgroup_files[] = {
6281 	{
6282 		.name = "memsw.usage_in_bytes",
6283 		.private = MEMFILE_PRIVATE(_MEMSWAP, RES_USAGE),
6284 		.read_u64 = mem_cgroup_read_u64,
6285 	},
6286 	{
6287 		.name = "memsw.max_usage_in_bytes",
6288 		.private = MEMFILE_PRIVATE(_MEMSWAP, RES_MAX_USAGE),
6289 		.write = mem_cgroup_reset,
6290 		.read_u64 = mem_cgroup_read_u64,
6291 	},
6292 	{
6293 		.name = "memsw.limit_in_bytes",
6294 		.private = MEMFILE_PRIVATE(_MEMSWAP, RES_LIMIT),
6295 		.write = mem_cgroup_write,
6296 		.read_u64 = mem_cgroup_read_u64,
6297 	},
6298 	{
6299 		.name = "memsw.failcnt",
6300 		.private = MEMFILE_PRIVATE(_MEMSWAP, RES_FAILCNT),
6301 		.write = mem_cgroup_reset,
6302 		.read_u64 = mem_cgroup_read_u64,
6303 	},
6304 	{ },	/* terminate */
6305 };
6306 
mem_cgroup_swap_init(void)6307 static int __init mem_cgroup_swap_init(void)
6308 {
6309 	if (!mem_cgroup_disabled() && really_do_swap_account) {
6310 		do_swap_account = 1;
6311 		WARN_ON(cgroup_add_dfl_cftypes(&memory_cgrp_subsys,
6312 					       swap_files));
6313 		WARN_ON(cgroup_add_legacy_cftypes(&memory_cgrp_subsys,
6314 						  memsw_cgroup_files));
6315 	}
6316 	return 0;
6317 }
6318 subsys_initcall(mem_cgroup_swap_init);
6319 
6320 #endif /* CONFIG_MEMCG_SWAP */
6321