]> git.karo-electronics.de Git - karo-tx-linux.git/blob - mm/slub.c
9cde663bbb1096fe544fb710ed3287dc33666e68
[karo-tx-linux.git] / mm / slub.c
1 /*
2  * SLUB: A slab allocator that limits cache line use instead of queuing
3  * objects in per cpu and per node lists.
4  *
5  * The allocator synchronizes using per slab locks or atomic operatios
6  * and only uses a centralized lock to manage a pool of partial slabs.
7  *
8  * (C) 2007 SGI, Christoph Lameter
9  * (C) 2011 Linux Foundation, Christoph Lameter
10  */
11
12 #include <linux/mm.h>
13 #include <linux/swap.h> /* struct reclaim_state */
14 #include <linux/module.h>
15 #include <linux/bit_spinlock.h>
16 #include <linux/interrupt.h>
17 #include <linux/bitops.h>
18 #include <linux/slab.h>
19 #include "slab.h"
20 #include <linux/proc_fs.h>
21 #include <linux/notifier.h>
22 #include <linux/seq_file.h>
23 #include <linux/kasan.h>
24 #include <linux/kmemcheck.h>
25 #include <linux/cpu.h>
26 #include <linux/cpuset.h>
27 #include <linux/mempolicy.h>
28 #include <linux/ctype.h>
29 #include <linux/debugobjects.h>
30 #include <linux/kallsyms.h>
31 #include <linux/memory.h>
32 #include <linux/math64.h>
33 #include <linux/fault-inject.h>
34 #include <linux/stacktrace.h>
35 #include <linux/prefetch.h>
36 #include <linux/memcontrol.h>
37
38 #include <trace/events/kmem.h>
39
40 #include "internal.h"
41
42 /*
43  * Lock order:
44  *   1. slab_mutex (Global Mutex)
45  *   2. node->list_lock
46  *   3. slab_lock(page) (Only on some arches and for debugging)
47  *
48  *   slab_mutex
49  *
50  *   The role of the slab_mutex is to protect the list of all the slabs
51  *   and to synchronize major metadata changes to slab cache structures.
52  *
53  *   The slab_lock is only used for debugging and on arches that do not
54  *   have the ability to do a cmpxchg_double. It only protects the second
55  *   double word in the page struct. Meaning
56  *      A. page->freelist       -> List of object free in a page
57  *      B. page->counters       -> Counters of objects
58  *      C. page->frozen         -> frozen state
59  *
60  *   If a slab is frozen then it is exempt from list management. It is not
61  *   on any list. The processor that froze the slab is the one who can
62  *   perform list operations on the page. Other processors may put objects
63  *   onto the freelist but the processor that froze the slab is the only
64  *   one that can retrieve the objects from the page's freelist.
65  *
66  *   The list_lock protects the partial and full list on each node and
67  *   the partial slab counter. If taken then no new slabs may be added or
68  *   removed from the lists nor make the number of partial slabs be modified.
69  *   (Note that the total number of slabs is an atomic value that may be
70  *   modified without taking the list lock).
71  *
72  *   The list_lock is a centralized lock and thus we avoid taking it as
73  *   much as possible. As long as SLUB does not have to handle partial
74  *   slabs, operations can continue without any centralized lock. F.e.
75  *   allocating a long series of objects that fill up slabs does not require
76  *   the list lock.
77  *   Interrupts are disabled during allocation and deallocation in order to
78  *   make the slab allocator safe to use in the context of an irq. In addition
79  *   interrupts are disabled to ensure that the processor does not change
80  *   while handling per_cpu slabs, due to kernel preemption.
81  *
82  * SLUB assigns one slab for allocation to each processor.
83  * Allocations only occur from these slabs called cpu slabs.
84  *
85  * Slabs with free elements are kept on a partial list and during regular
86  * operations no list for full slabs is used. If an object in a full slab is
87  * freed then the slab will show up again on the partial lists.
88  * We track full slabs for debugging purposes though because otherwise we
89  * cannot scan all objects.
90  *
91  * Slabs are freed when they become empty. Teardown and setup is
92  * minimal so we rely on the page allocators per cpu caches for
93  * fast frees and allocs.
94  *
95  * Overloading of page flags that are otherwise used for LRU management.
96  *
97  * PageActive           The slab is frozen and exempt from list processing.
98  *                      This means that the slab is dedicated to a purpose
99  *                      such as satisfying allocations for a specific
100  *                      processor. Objects may be freed in the slab while
101  *                      it is frozen but slab_free will then skip the usual
102  *                      list operations. It is up to the processor holding
103  *                      the slab to integrate the slab into the slab lists
104  *                      when the slab is no longer needed.
105  *
106  *                      One use of this flag is to mark slabs that are
107  *                      used for allocations. Then such a slab becomes a cpu
108  *                      slab. The cpu slab may be equipped with an additional
109  *                      freelist that allows lockless access to
110  *                      free objects in addition to the regular freelist
111  *                      that requires the slab lock.
112  *
113  * PageError            Slab requires special handling due to debug
114  *                      options set. This moves slab handling out of
115  *                      the fast path and disables lockless freelists.
116  */
117
118 static inline int kmem_cache_debug(struct kmem_cache *s)
119 {
120 #ifdef CONFIG_SLUB_DEBUG
121         return unlikely(s->flags & SLAB_DEBUG_FLAGS);
122 #else
123         return 0;
124 #endif
125 }
126
127 static inline bool kmem_cache_has_cpu_partial(struct kmem_cache *s)
128 {
129 #ifdef CONFIG_SLUB_CPU_PARTIAL
130         return !kmem_cache_debug(s);
131 #else
132         return false;
133 #endif
134 }
135
136 /*
137  * Issues still to be resolved:
138  *
139  * - Support PAGE_ALLOC_DEBUG. Should be easy to do.
140  *
141  * - Variable sizing of the per node arrays
142  */
143
144 /* Enable to test recovery from slab corruption on boot */
145 #undef SLUB_RESILIENCY_TEST
146
147 /* Enable to log cmpxchg failures */
148 #undef SLUB_DEBUG_CMPXCHG
149
150 /*
151  * Mininum number of partial slabs. These will be left on the partial
152  * lists even if they are empty. kmem_cache_shrink may reclaim them.
153  */
154 #define MIN_PARTIAL 5
155
156 /*
157  * Maximum number of desirable partial slabs.
158  * The existence of more partial slabs makes kmem_cache_shrink
159  * sort the partial list by the number of objects in use.
160  */
161 #define MAX_PARTIAL 10
162
163 #define DEBUG_DEFAULT_FLAGS (SLAB_CONSISTENCY_CHECKS | SLAB_RED_ZONE | \
164                                 SLAB_POISON | SLAB_STORE_USER)
165
166 /*
167  * Debugging flags that require metadata to be stored in the slab.  These get
168  * disabled when slub_debug=O is used and a cache's min order increases with
169  * metadata.
170  */
171 #define DEBUG_METADATA_FLAGS (SLAB_RED_ZONE | SLAB_POISON | SLAB_STORE_USER)
172
173 #define OO_SHIFT        16
174 #define OO_MASK         ((1 << OO_SHIFT) - 1)
175 #define MAX_OBJS_PER_PAGE       32767 /* since page.objects is u15 */
176
177 /* Internal SLUB flags */
178 #define __OBJECT_POISON         0x80000000UL /* Poison object */
179 #define __CMPXCHG_DOUBLE        0x40000000UL /* Use cmpxchg_double */
180
181 #ifdef CONFIG_SMP
182 static struct notifier_block slab_notifier;
183 #endif
184
185 /*
186  * Tracking user of a slab.
187  */
188 #define TRACK_ADDRS_COUNT 16
189 struct track {
190         unsigned long addr;     /* Called from address */
191 #ifdef CONFIG_STACKTRACE
192         unsigned long addrs[TRACK_ADDRS_COUNT]; /* Called from address */
193 #endif
194         int cpu;                /* Was running on cpu */
195         int pid;                /* Pid context */
196         unsigned long when;     /* When did the operation occur */
197 };
198
199 enum track_item { TRACK_ALLOC, TRACK_FREE };
200
201 #ifdef CONFIG_SYSFS
202 static int sysfs_slab_add(struct kmem_cache *);
203 static int sysfs_slab_alias(struct kmem_cache *, const char *);
204 static void memcg_propagate_slab_attrs(struct kmem_cache *s);
205 #else
206 static inline int sysfs_slab_add(struct kmem_cache *s) { return 0; }
207 static inline int sysfs_slab_alias(struct kmem_cache *s, const char *p)
208                                                         { return 0; }
209 static inline void memcg_propagate_slab_attrs(struct kmem_cache *s) { }
210 #endif
211
212 static inline void stat(const struct kmem_cache *s, enum stat_item si)
213 {
214 #ifdef CONFIG_SLUB_STATS
215         /*
216          * The rmw is racy on a preemptible kernel but this is acceptable, so
217          * avoid this_cpu_add()'s irq-disable overhead.
218          */
219         raw_cpu_inc(s->cpu_slab->stat[si]);
220 #endif
221 }
222
223 /********************************************************************
224  *                      Core slab cache functions
225  *******************************************************************/
226
227 /* Verify that a pointer has an address that is valid within a slab page */
228 static inline int check_valid_pointer(struct kmem_cache *s,
229                                 struct page *page, const void *object)
230 {
231         void *base;
232
233         if (!object)
234                 return 1;
235
236         base = page_address(page);
237         if (object < base || object >= base + page->objects * s->size ||
238                 (object - base) % s->size) {
239                 return 0;
240         }
241
242         return 1;
243 }
244
245 static inline void *get_freepointer(struct kmem_cache *s, void *object)
246 {
247         return *(void **)(object + s->offset);
248 }
249
250 static void prefetch_freepointer(const struct kmem_cache *s, void *object)
251 {
252         prefetch(object + s->offset);
253 }
254
255 static inline void *get_freepointer_safe(struct kmem_cache *s, void *object)
256 {
257         void *p;
258
259 #ifdef CONFIG_DEBUG_PAGEALLOC
260         probe_kernel_read(&p, (void **)(object + s->offset), sizeof(p));
261 #else
262         p = get_freepointer(s, object);
263 #endif
264         return p;
265 }
266
267 static inline void set_freepointer(struct kmem_cache *s, void *object, void *fp)
268 {
269         *(void **)(object + s->offset) = fp;
270 }
271
272 /* Loop over all objects in a slab */
273 #define for_each_object(__p, __s, __addr, __objects) \
274         for (__p = (__addr); __p < (__addr) + (__objects) * (__s)->size;\
275                         __p += (__s)->size)
276
277 #define for_each_object_idx(__p, __idx, __s, __addr, __objects) \
278         for (__p = (__addr), __idx = 1; __idx <= __objects;\
279                         __p += (__s)->size, __idx++)
280
281 /* Determine object index from a given position */
282 static inline int slab_index(void *p, struct kmem_cache *s, void *addr)
283 {
284         return (p - addr) / s->size;
285 }
286
287 static inline int order_objects(int order, unsigned long size, int reserved)
288 {
289         return ((PAGE_SIZE << order) - reserved) / size;
290 }
291
292 static inline struct kmem_cache_order_objects oo_make(int order,
293                 unsigned long size, int reserved)
294 {
295         struct kmem_cache_order_objects x = {
296                 (order << OO_SHIFT) + order_objects(order, size, reserved)
297         };
298
299         return x;
300 }
301
302 static inline int oo_order(struct kmem_cache_order_objects x)
303 {
304         return x.x >> OO_SHIFT;
305 }
306
307 static inline int oo_objects(struct kmem_cache_order_objects x)
308 {
309         return x.x & OO_MASK;
310 }
311
312 /*
313  * Per slab locking using the pagelock
314  */
315 static __always_inline void slab_lock(struct page *page)
316 {
317         VM_BUG_ON_PAGE(PageTail(page), page);
318         bit_spin_lock(PG_locked, &page->flags);
319 }
320
321 static __always_inline void slab_unlock(struct page *page)
322 {
323         VM_BUG_ON_PAGE(PageTail(page), page);
324         __bit_spin_unlock(PG_locked, &page->flags);
325 }
326
327 static inline void set_page_slub_counters(struct page *page, unsigned long counters_new)
328 {
329         struct page tmp;
330         tmp.counters = counters_new;
331         /*
332          * page->counters can cover frozen/inuse/objects as well
333          * as page->_count.  If we assign to ->counters directly
334          * we run the risk of losing updates to page->_count, so
335          * be careful and only assign to the fields we need.
336          */
337         page->frozen  = tmp.frozen;
338         page->inuse   = tmp.inuse;
339         page->objects = tmp.objects;
340 }
341
342 /* Interrupts must be disabled (for the fallback code to work right) */
343 static inline bool __cmpxchg_double_slab(struct kmem_cache *s, struct page *page,
344                 void *freelist_old, unsigned long counters_old,
345                 void *freelist_new, unsigned long counters_new,
346                 const char *n)
347 {
348         VM_BUG_ON(!irqs_disabled());
349 #if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \
350     defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE)
351         if (s->flags & __CMPXCHG_DOUBLE) {
352                 if (cmpxchg_double(&page->freelist, &page->counters,
353                                    freelist_old, counters_old,
354                                    freelist_new, counters_new))
355                         return true;
356         } else
357 #endif
358         {
359                 slab_lock(page);
360                 if (page->freelist == freelist_old &&
361                                         page->counters == counters_old) {
362                         page->freelist = freelist_new;
363                         set_page_slub_counters(page, counters_new);
364                         slab_unlock(page);
365                         return true;
366                 }
367                 slab_unlock(page);
368         }
369
370         cpu_relax();
371         stat(s, CMPXCHG_DOUBLE_FAIL);
372
373 #ifdef SLUB_DEBUG_CMPXCHG
374         pr_info("%s %s: cmpxchg double redo ", n, s->name);
375 #endif
376
377         return false;
378 }
379
380 static inline bool cmpxchg_double_slab(struct kmem_cache *s, struct page *page,
381                 void *freelist_old, unsigned long counters_old,
382                 void *freelist_new, unsigned long counters_new,
383                 const char *n)
384 {
385 #if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \
386     defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE)
387         if (s->flags & __CMPXCHG_DOUBLE) {
388                 if (cmpxchg_double(&page->freelist, &page->counters,
389                                    freelist_old, counters_old,
390                                    freelist_new, counters_new))
391                         return true;
392         } else
393 #endif
394         {
395                 unsigned long flags;
396
397                 local_irq_save(flags);
398                 slab_lock(page);
399                 if (page->freelist == freelist_old &&
400                                         page->counters == counters_old) {
401                         page->freelist = freelist_new;
402                         set_page_slub_counters(page, counters_new);
403                         slab_unlock(page);
404                         local_irq_restore(flags);
405                         return true;
406                 }
407                 slab_unlock(page);
408                 local_irq_restore(flags);
409         }
410
411         cpu_relax();
412         stat(s, CMPXCHG_DOUBLE_FAIL);
413
414 #ifdef SLUB_DEBUG_CMPXCHG
415         pr_info("%s %s: cmpxchg double redo ", n, s->name);
416 #endif
417
418         return false;
419 }
420
421 #ifdef CONFIG_SLUB_DEBUG
422 /*
423  * Determine a map of object in use on a page.
424  *
425  * Node listlock must be held to guarantee that the page does
426  * not vanish from under us.
427  */
428 static void get_map(struct kmem_cache *s, struct page *page, unsigned long *map)
429 {
430         void *p;
431         void *addr = page_address(page);
432
433         for (p = page->freelist; p; p = get_freepointer(s, p))
434                 set_bit(slab_index(p, s, addr), map);
435 }
436
437 /*
438  * Debug settings:
439  */
440 #if defined(CONFIG_SLUB_DEBUG_ON)
441 static int slub_debug = DEBUG_DEFAULT_FLAGS;
442 #elif defined(CONFIG_KASAN)
443 static int slub_debug = SLAB_STORE_USER;
444 #else
445 static int slub_debug;
446 #endif
447
448 static char *slub_debug_slabs;
449 static int disable_higher_order_debug;
450
451 /*
452  * slub is about to manipulate internal object metadata.  This memory lies
453  * outside the range of the allocated object, so accessing it would normally
454  * be reported by kasan as a bounds error.  metadata_access_enable() is used
455  * to tell kasan that these accesses are OK.
456  */
457 static inline void metadata_access_enable(void)
458 {
459         kasan_disable_current();
460 }
461
462 static inline void metadata_access_disable(void)
463 {
464         kasan_enable_current();
465 }
466
467 /*
468  * Object debugging
469  */
470 static void print_section(char *text, u8 *addr, unsigned int length)
471 {
472         metadata_access_enable();
473         print_hex_dump(KERN_ERR, text, DUMP_PREFIX_ADDRESS, 16, 1, addr,
474                         length, 1);
475         metadata_access_disable();
476 }
477
478 static struct track *get_track(struct kmem_cache *s, void *object,
479         enum track_item alloc)
480 {
481         struct track *p;
482
483         if (s->offset)
484                 p = object + s->offset + sizeof(void *);
485         else
486                 p = object + s->inuse;
487
488         return p + alloc;
489 }
490
491 static void set_track(struct kmem_cache *s, void *object,
492                         enum track_item alloc, unsigned long addr)
493 {
494         struct track *p = get_track(s, object, alloc);
495
496         if (addr) {
497 #ifdef CONFIG_STACKTRACE
498                 struct stack_trace trace;
499                 int i;
500
501                 trace.nr_entries = 0;
502                 trace.max_entries = TRACK_ADDRS_COUNT;
503                 trace.entries = p->addrs;
504                 trace.skip = 3;
505                 metadata_access_enable();
506                 save_stack_trace(&trace);
507                 metadata_access_disable();
508
509                 /* See rant in lockdep.c */
510                 if (trace.nr_entries != 0 &&
511                     trace.entries[trace.nr_entries - 1] == ULONG_MAX)
512                         trace.nr_entries--;
513
514                 for (i = trace.nr_entries; i < TRACK_ADDRS_COUNT; i++)
515                         p->addrs[i] = 0;
516 #endif
517                 p->addr = addr;
518                 p->cpu = smp_processor_id();
519                 p->pid = current->pid;
520                 p->when = jiffies;
521         } else
522                 memset(p, 0, sizeof(struct track));
523 }
524
525 static void init_tracking(struct kmem_cache *s, void *object)
526 {
527         if (!(s->flags & SLAB_STORE_USER))
528                 return;
529
530         set_track(s, object, TRACK_FREE, 0UL);
531         set_track(s, object, TRACK_ALLOC, 0UL);
532 }
533
534 static void print_track(const char *s, struct track *t)
535 {
536         if (!t->addr)
537                 return;
538
539         pr_err("INFO: %s in %pS age=%lu cpu=%u pid=%d\n",
540                s, (void *)t->addr, jiffies - t->when, t->cpu, t->pid);
541 #ifdef CONFIG_STACKTRACE
542         {
543                 int i;
544                 for (i = 0; i < TRACK_ADDRS_COUNT; i++)
545                         if (t->addrs[i])
546                                 pr_err("\t%pS\n", (void *)t->addrs[i]);
547                         else
548                                 break;
549         }
550 #endif
551 }
552
553 static void print_tracking(struct kmem_cache *s, void *object)
554 {
555         if (!(s->flags & SLAB_STORE_USER))
556                 return;
557
558         print_track("Allocated", get_track(s, object, TRACK_ALLOC));
559         print_track("Freed", get_track(s, object, TRACK_FREE));
560 }
561
562 static void print_page_info(struct page *page)
563 {
564         pr_err("INFO: Slab 0x%p objects=%u used=%u fp=0x%p flags=0x%04lx\n",
565                page, page->objects, page->inuse, page->freelist, page->flags);
566
567 }
568
569 static void slab_bug(struct kmem_cache *s, char *fmt, ...)
570 {
571         struct va_format vaf;
572         va_list args;
573
574         va_start(args, fmt);
575         vaf.fmt = fmt;
576         vaf.va = &args;
577         pr_err("=============================================================================\n");
578         pr_err("BUG %s (%s): %pV\n", s->name, print_tainted(), &vaf);
579         pr_err("-----------------------------------------------------------------------------\n\n");
580
581         add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE);
582         va_end(args);
583 }
584
585 static void slab_fix(struct kmem_cache *s, char *fmt, ...)
586 {
587         struct va_format vaf;
588         va_list args;
589
590         va_start(args, fmt);
591         vaf.fmt = fmt;
592         vaf.va = &args;
593         pr_err("FIX %s: %pV\n", s->name, &vaf);
594         va_end(args);
595 }
596
597 static void print_trailer(struct kmem_cache *s, struct page *page, u8 *p)
598 {
599         unsigned int off;       /* Offset of last byte */
600         u8 *addr = page_address(page);
601
602         print_tracking(s, p);
603
604         print_page_info(page);
605
606         pr_err("INFO: Object 0x%p @offset=%tu fp=0x%p\n\n",
607                p, p - addr, get_freepointer(s, p));
608
609         if (p > addr + 16)
610                 print_section("Bytes b4 ", p - 16, 16);
611
612         print_section("Object ", p, min_t(unsigned long, s->object_size,
613                                 PAGE_SIZE));
614         if (s->flags & SLAB_RED_ZONE)
615                 print_section("Redzone ", p + s->object_size,
616                         s->inuse - s->object_size);
617
618         if (s->offset)
619                 off = s->offset + sizeof(void *);
620         else
621                 off = s->inuse;
622
623         if (s->flags & SLAB_STORE_USER)
624                 off += 2 * sizeof(struct track);
625
626         if (off != s->size)
627                 /* Beginning of the filler is the free pointer */
628                 print_section("Padding ", p + off, s->size - off);
629
630         dump_stack();
631 }
632
633 void object_err(struct kmem_cache *s, struct page *page,
634                         u8 *object, char *reason)
635 {
636         slab_bug(s, "%s", reason);
637         print_trailer(s, page, object);
638 }
639
640 static void slab_err(struct kmem_cache *s, struct page *page,
641                         const char *fmt, ...)
642 {
643         va_list args;
644         char buf[100];
645
646         va_start(args, fmt);
647         vsnprintf(buf, sizeof(buf), fmt, args);
648         va_end(args);
649         slab_bug(s, "%s", buf);
650         print_page_info(page);
651         dump_stack();
652 }
653
654 static void init_object(struct kmem_cache *s, void *object, u8 val)
655 {
656         u8 *p = object;
657
658         if (s->flags & __OBJECT_POISON) {
659                 memset(p, POISON_FREE, s->object_size - 1);
660                 p[s->object_size - 1] = POISON_END;
661         }
662
663         if (s->flags & SLAB_RED_ZONE)
664                 memset(p + s->object_size, val, s->inuse - s->object_size);
665 }
666
667 static void restore_bytes(struct kmem_cache *s, char *message, u8 data,
668                                                 void *from, void *to)
669 {
670         slab_fix(s, "Restoring 0x%p-0x%p=0x%x\n", from, to - 1, data);
671         memset(from, data, to - from);
672 }
673
674 static int check_bytes_and_report(struct kmem_cache *s, struct page *page,
675                         u8 *object, char *what,
676                         u8 *start, unsigned int value, unsigned int bytes)
677 {
678         u8 *fault;
679         u8 *end;
680
681         metadata_access_enable();
682         fault = memchr_inv(start, value, bytes);
683         metadata_access_disable();
684         if (!fault)
685                 return 1;
686
687         end = start + bytes;
688         while (end > fault && end[-1] == value)
689                 end--;
690
691         slab_bug(s, "%s overwritten", what);
692         pr_err("INFO: 0x%p-0x%p. First byte 0x%x instead of 0x%x\n",
693                                         fault, end - 1, fault[0], value);
694         print_trailer(s, page, object);
695
696         restore_bytes(s, what, value, fault, end);
697         return 0;
698 }
699
700 /*
701  * Object layout:
702  *
703  * object address
704  *      Bytes of the object to be managed.
705  *      If the freepointer may overlay the object then the free
706  *      pointer is the first word of the object.
707  *
708  *      Poisoning uses 0x6b (POISON_FREE) and the last byte is
709  *      0xa5 (POISON_END)
710  *
711  * object + s->object_size
712  *      Padding to reach word boundary. This is also used for Redzoning.
713  *      Padding is extended by another word if Redzoning is enabled and
714  *      object_size == inuse.
715  *
716  *      We fill with 0xbb (RED_INACTIVE) for inactive objects and with
717  *      0xcc (RED_ACTIVE) for objects in use.
718  *
719  * object + s->inuse
720  *      Meta data starts here.
721  *
722  *      A. Free pointer (if we cannot overwrite object on free)
723  *      B. Tracking data for SLAB_STORE_USER
724  *      C. Padding to reach required alignment boundary or at mininum
725  *              one word if debugging is on to be able to detect writes
726  *              before the word boundary.
727  *
728  *      Padding is done using 0x5a (POISON_INUSE)
729  *
730  * object + s->size
731  *      Nothing is used beyond s->size.
732  *
733  * If slabcaches are merged then the object_size and inuse boundaries are mostly
734  * ignored. And therefore no slab options that rely on these boundaries
735  * may be used with merged slabcaches.
736  */
737
738 static int check_pad_bytes(struct kmem_cache *s, struct page *page, u8 *p)
739 {
740         unsigned long off = s->inuse;   /* The end of info */
741
742         if (s->offset)
743                 /* Freepointer is placed after the object. */
744                 off += sizeof(void *);
745
746         if (s->flags & SLAB_STORE_USER)
747                 /* We also have user information there */
748                 off += 2 * sizeof(struct track);
749
750         if (s->size == off)
751                 return 1;
752
753         return check_bytes_and_report(s, page, p, "Object padding",
754                                 p + off, POISON_INUSE, s->size - off);
755 }
756
757 /* Check the pad bytes at the end of a slab page */
758 static int slab_pad_check(struct kmem_cache *s, struct page *page)
759 {
760         u8 *start;
761         u8 *fault;
762         u8 *end;
763         int length;
764         int remainder;
765
766         if (!(s->flags & SLAB_POISON))
767                 return 1;
768
769         start = page_address(page);
770         length = (PAGE_SIZE << compound_order(page)) - s->reserved;
771         end = start + length;
772         remainder = length % s->size;
773         if (!remainder)
774                 return 1;
775
776         metadata_access_enable();
777         fault = memchr_inv(end - remainder, POISON_INUSE, remainder);
778         metadata_access_disable();
779         if (!fault)
780                 return 1;
781         while (end > fault && end[-1] == POISON_INUSE)
782                 end--;
783
784         slab_err(s, page, "Padding overwritten. 0x%p-0x%p", fault, end - 1);
785         print_section("Padding ", end - remainder, remainder);
786
787         restore_bytes(s, "slab padding", POISON_INUSE, end - remainder, end);
788         return 0;
789 }
790
791 static int check_object(struct kmem_cache *s, struct page *page,
792                                         void *object, u8 val)
793 {
794         u8 *p = object;
795         u8 *endobject = object + s->object_size;
796
797         if (s->flags & SLAB_RED_ZONE) {
798                 if (!check_bytes_and_report(s, page, object, "Redzone",
799                         endobject, val, s->inuse - s->object_size))
800                         return 0;
801         } else {
802                 if ((s->flags & SLAB_POISON) && s->object_size < s->inuse) {
803                         check_bytes_and_report(s, page, p, "Alignment padding",
804                                 endobject, POISON_INUSE,
805                                 s->inuse - s->object_size);
806                 }
807         }
808
809         if (s->flags & SLAB_POISON) {
810                 if (val != SLUB_RED_ACTIVE && (s->flags & __OBJECT_POISON) &&
811                         (!check_bytes_and_report(s, page, p, "Poison", p,
812                                         POISON_FREE, s->object_size - 1) ||
813                          !check_bytes_and_report(s, page, p, "Poison",
814                                 p + s->object_size - 1, POISON_END, 1)))
815                         return 0;
816                 /*
817                  * check_pad_bytes cleans up on its own.
818                  */
819                 check_pad_bytes(s, page, p);
820         }
821
822         if (!s->offset && val == SLUB_RED_ACTIVE)
823                 /*
824                  * Object and freepointer overlap. Cannot check
825                  * freepointer while object is allocated.
826                  */
827                 return 1;
828
829         /* Check free pointer validity */
830         if (!check_valid_pointer(s, page, get_freepointer(s, p))) {
831                 object_err(s, page, p, "Freepointer corrupt");
832                 /*
833                  * No choice but to zap it and thus lose the remainder
834                  * of the free objects in this slab. May cause
835                  * another error because the object count is now wrong.
836                  */
837                 set_freepointer(s, p, NULL);
838                 return 0;
839         }
840         return 1;
841 }
842
843 static int check_slab(struct kmem_cache *s, struct page *page)
844 {
845         int maxobj;
846
847         VM_BUG_ON(!irqs_disabled());
848
849         if (!PageSlab(page)) {
850                 slab_err(s, page, "Not a valid slab page");
851                 return 0;
852         }
853
854         maxobj = order_objects(compound_order(page), s->size, s->reserved);
855         if (page->objects > maxobj) {
856                 slab_err(s, page, "objects %u > max %u",
857                         page->objects, maxobj);
858                 return 0;
859         }
860         if (page->inuse > page->objects) {
861                 slab_err(s, page, "inuse %u > max %u",
862                         page->inuse, page->objects);
863                 return 0;
864         }
865         /* Slab_pad_check fixes things up after itself */
866         slab_pad_check(s, page);
867         return 1;
868 }
869
870 /*
871  * Determine if a certain object on a page is on the freelist. Must hold the
872  * slab lock to guarantee that the chains are in a consistent state.
873  */
874 static int on_freelist(struct kmem_cache *s, struct page *page, void *search)
875 {
876         int nr = 0;
877         void *fp;
878         void *object = NULL;
879         int max_objects;
880
881         fp = page->freelist;
882         while (fp && nr <= page->objects) {
883                 if (fp == search)
884                         return 1;
885                 if (!check_valid_pointer(s, page, fp)) {
886                         if (object) {
887                                 object_err(s, page, object,
888                                         "Freechain corrupt");
889                                 set_freepointer(s, object, NULL);
890                         } else {
891                                 slab_err(s, page, "Freepointer corrupt");
892                                 page->freelist = NULL;
893                                 page->inuse = page->objects;
894                                 slab_fix(s, "Freelist cleared");
895                                 return 0;
896                         }
897                         break;
898                 }
899                 object = fp;
900                 fp = get_freepointer(s, object);
901                 nr++;
902         }
903
904         max_objects = order_objects(compound_order(page), s->size, s->reserved);
905         if (max_objects > MAX_OBJS_PER_PAGE)
906                 max_objects = MAX_OBJS_PER_PAGE;
907
908         if (page->objects != max_objects) {
909                 slab_err(s, page, "Wrong number of objects. Found %d but "
910                         "should be %d", page->objects, max_objects);
911                 page->objects = max_objects;
912                 slab_fix(s, "Number of objects adjusted.");
913         }
914         if (page->inuse != page->objects - nr) {
915                 slab_err(s, page, "Wrong object count. Counter is %d but "
916                         "counted were %d", page->inuse, page->objects - nr);
917                 page->inuse = page->objects - nr;
918                 slab_fix(s, "Object count adjusted.");
919         }
920         return search == NULL;
921 }
922
923 static void trace(struct kmem_cache *s, struct page *page, void *object,
924                                                                 int alloc)
925 {
926         if (s->flags & SLAB_TRACE) {
927                 pr_info("TRACE %s %s 0x%p inuse=%d fp=0x%p\n",
928                         s->name,
929                         alloc ? "alloc" : "free",
930                         object, page->inuse,
931                         page->freelist);
932
933                 if (!alloc)
934                         print_section("Object ", (void *)object,
935                                         s->object_size);
936
937                 dump_stack();
938         }
939 }
940
941 /*
942  * Tracking of fully allocated slabs for debugging purposes.
943  */
944 static void add_full(struct kmem_cache *s,
945         struct kmem_cache_node *n, struct page *page)
946 {
947         if (!(s->flags & SLAB_STORE_USER))
948                 return;
949
950         lockdep_assert_held(&n->list_lock);
951         list_add(&page->lru, &n->full);
952 }
953
954 static void remove_full(struct kmem_cache *s, struct kmem_cache_node *n, struct page *page)
955 {
956         if (!(s->flags & SLAB_STORE_USER))
957                 return;
958
959         lockdep_assert_held(&n->list_lock);
960         list_del(&page->lru);
961 }
962
963 /* Tracking of the number of slabs for debugging purposes */
964 static inline unsigned long slabs_node(struct kmem_cache *s, int node)
965 {
966         struct kmem_cache_node *n = get_node(s, node);
967
968         return atomic_long_read(&n->nr_slabs);
969 }
970
971 static inline unsigned long node_nr_slabs(struct kmem_cache_node *n)
972 {
973         return atomic_long_read(&n->nr_slabs);
974 }
975
976 static inline void inc_slabs_node(struct kmem_cache *s, int node, int objects)
977 {
978         struct kmem_cache_node *n = get_node(s, node);
979
980         /*
981          * May be called early in order to allocate a slab for the
982          * kmem_cache_node structure. Solve the chicken-egg
983          * dilemma by deferring the increment of the count during
984          * bootstrap (see early_kmem_cache_node_alloc).
985          */
986         if (likely(n)) {
987                 atomic_long_inc(&n->nr_slabs);
988                 atomic_long_add(objects, &n->total_objects);
989         }
990 }
991 static inline void dec_slabs_node(struct kmem_cache *s, int node, int objects)
992 {
993         struct kmem_cache_node *n = get_node(s, node);
994
995         atomic_long_dec(&n->nr_slabs);
996         atomic_long_sub(objects, &n->total_objects);
997 }
998
999 /* Object debug checks for alloc/free paths */
1000 static void setup_object_debug(struct kmem_cache *s, struct page *page,
1001                                                                 void *object)
1002 {
1003         if (!(s->flags & (SLAB_STORE_USER|SLAB_RED_ZONE|__OBJECT_POISON)))
1004                 return;
1005
1006         init_object(s, object, SLUB_RED_INACTIVE);
1007         init_tracking(s, object);
1008 }
1009
1010 static inline int alloc_consistency_checks(struct kmem_cache *s,
1011                                         struct page *page,
1012                                         void *object, unsigned long addr)
1013 {
1014         if (!check_slab(s, page))
1015                 return 0;
1016
1017         if (!check_valid_pointer(s, page, object)) {
1018                 object_err(s, page, object, "Freelist Pointer check fails");
1019                 return 0;
1020         }
1021
1022         if (!check_object(s, page, object, SLUB_RED_INACTIVE))
1023                 return 0;
1024
1025         return 1;
1026 }
1027
1028 static noinline int alloc_debug_processing(struct kmem_cache *s,
1029                                         struct page *page,
1030                                         void *object, unsigned long addr)
1031 {
1032         if (s->flags & SLAB_CONSISTENCY_CHECKS) {
1033                 if (!alloc_consistency_checks(s, page, object, addr))
1034                         goto bad;
1035         }
1036
1037         /* Success perform special debug activities for allocs */
1038         if (s->flags & SLAB_STORE_USER)
1039                 set_track(s, object, TRACK_ALLOC, addr);
1040         trace(s, page, object, 1);
1041         init_object(s, object, SLUB_RED_ACTIVE);
1042         return 1;
1043
1044 bad:
1045         if (PageSlab(page)) {
1046                 /*
1047                  * If this is a slab page then lets do the best we can
1048                  * to avoid issues in the future. Marking all objects
1049                  * as used avoids touching the remaining objects.
1050                  */
1051                 slab_fix(s, "Marking all objects used");
1052                 page->inuse = page->objects;
1053                 page->freelist = NULL;
1054         }
1055         return 0;
1056 }
1057
1058 static inline int free_consistency_checks(struct kmem_cache *s,
1059                 struct page *page, void *object, unsigned long addr)
1060 {
1061         if (!check_valid_pointer(s, page, object)) {
1062                 slab_err(s, page, "Invalid object pointer 0x%p", object);
1063                 return 0;
1064         }
1065
1066         if (on_freelist(s, page, object)) {
1067                 object_err(s, page, object, "Object already free");
1068                 return 0;
1069         }
1070
1071         if (!check_object(s, page, object, SLUB_RED_ACTIVE))
1072                 return 0;
1073
1074         if (unlikely(s != page->slab_cache)) {
1075                 if (!PageSlab(page)) {
1076                         slab_err(s, page, "Attempt to free object(0x%p) "
1077                                 "outside of slab", object);
1078                 } else if (!page->slab_cache) {
1079                         pr_err("SLUB <none>: no slab for object 0x%p.\n",
1080                                object);
1081                         dump_stack();
1082                 } else
1083                         object_err(s, page, object,
1084                                         "page slab pointer corrupt.");
1085                 return 0;
1086         }
1087         return 1;
1088 }
1089
1090 /* Supports checking bulk free of a constructed freelist */
1091 static noinline int free_debug_processing(
1092         struct kmem_cache *s, struct page *page,
1093         void *head, void *tail, int bulk_cnt,
1094         unsigned long addr)
1095 {
1096         struct kmem_cache_node *n = get_node(s, page_to_nid(page));
1097         void *object = head;
1098         int cnt = 0;
1099         unsigned long uninitialized_var(flags);
1100         int ret = 0;
1101
1102         spin_lock_irqsave(&n->list_lock, flags);
1103         slab_lock(page);
1104
1105         if (s->flags & SLAB_CONSISTENCY_CHECKS) {
1106                 if (!check_slab(s, page))
1107                         goto out;
1108         }
1109
1110 next_object:
1111         cnt++;
1112
1113         if (s->flags & SLAB_CONSISTENCY_CHECKS) {
1114                 if (!free_consistency_checks(s, page, object, addr))
1115                         goto out;
1116         }
1117
1118         if (s->flags & SLAB_STORE_USER)
1119                 set_track(s, object, TRACK_FREE, addr);
1120         trace(s, page, object, 0);
1121         /* Freepointer not overwritten by init_object(), SLAB_POISON moved it */
1122         init_object(s, object, SLUB_RED_INACTIVE);
1123
1124         /* Reached end of constructed freelist yet? */
1125         if (object != tail) {
1126                 object = get_freepointer(s, object);
1127                 goto next_object;
1128         }
1129         ret = 1;
1130
1131 out:
1132         if (cnt != bulk_cnt)
1133                 slab_err(s, page, "Bulk freelist count(%d) invalid(%d)\n",
1134                          bulk_cnt, cnt);
1135
1136         slab_unlock(page);
1137         spin_unlock_irqrestore(&n->list_lock, flags);
1138         if (!ret)
1139                 slab_fix(s, "Object at 0x%p not freed", object);
1140         return ret;
1141 }
1142
1143 static int __init setup_slub_debug(char *str)
1144 {
1145         slub_debug = DEBUG_DEFAULT_FLAGS;
1146         if (*str++ != '=' || !*str)
1147                 /*
1148                  * No options specified. Switch on full debugging.
1149                  */
1150                 goto out;
1151
1152         if (*str == ',')
1153                 /*
1154                  * No options but restriction on slabs. This means full
1155                  * debugging for slabs matching a pattern.
1156                  */
1157                 goto check_slabs;
1158
1159         slub_debug = 0;
1160         if (*str == '-')
1161                 /*
1162                  * Switch off all debugging measures.
1163                  */
1164                 goto out;
1165
1166         /*
1167          * Determine which debug features should be switched on
1168          */
1169         for (; *str && *str != ','; str++) {
1170                 switch (tolower(*str)) {
1171                 case 'f':
1172                         slub_debug |= SLAB_CONSISTENCY_CHECKS;
1173                         break;
1174                 case 'z':
1175                         slub_debug |= SLAB_RED_ZONE;
1176                         break;
1177                 case 'p':
1178                         slub_debug |= SLAB_POISON;
1179                         break;
1180                 case 'u':
1181                         slub_debug |= SLAB_STORE_USER;
1182                         break;
1183                 case 't':
1184                         slub_debug |= SLAB_TRACE;
1185                         break;
1186                 case 'a':
1187                         slub_debug |= SLAB_FAILSLAB;
1188                         break;
1189                 case 'o':
1190                         /*
1191                          * Avoid enabling debugging on caches if its minimum
1192                          * order would increase as a result.
1193                          */
1194                         disable_higher_order_debug = 1;
1195                         break;
1196                 default:
1197                         pr_err("slub_debug option '%c' unknown. skipped\n",
1198                                *str);
1199                 }
1200         }
1201
1202 check_slabs:
1203         if (*str == ',')
1204                 slub_debug_slabs = str + 1;
1205 out:
1206         return 1;
1207 }
1208
1209 __setup("slub_debug", setup_slub_debug);
1210
1211 unsigned long kmem_cache_flags(unsigned long object_size,
1212         unsigned long flags, const char *name,
1213         void (*ctor)(void *))
1214 {
1215         /*
1216          * Enable debugging if selected on the kernel commandline.
1217          */
1218         if (slub_debug && (!slub_debug_slabs || (name &&
1219                 !strncmp(slub_debug_slabs, name, strlen(slub_debug_slabs)))))
1220                 flags |= slub_debug;
1221
1222         return flags;
1223 }
1224 #else /* !CONFIG_SLUB_DEBUG */
1225 static inline void setup_object_debug(struct kmem_cache *s,
1226                         struct page *page, void *object) {}
1227
1228 static inline int alloc_debug_processing(struct kmem_cache *s,
1229         struct page *page, void *object, unsigned long addr) { return 0; }
1230
1231 static inline int free_debug_processing(
1232         struct kmem_cache *s, struct page *page,
1233         void *head, void *tail, int bulk_cnt,
1234         unsigned long addr) { return 0; }
1235
1236 static inline int slab_pad_check(struct kmem_cache *s, struct page *page)
1237                         { return 1; }
1238 static inline int check_object(struct kmem_cache *s, struct page *page,
1239                         void *object, u8 val) { return 1; }
1240 static inline void add_full(struct kmem_cache *s, struct kmem_cache_node *n,
1241                                         struct page *page) {}
1242 static inline void remove_full(struct kmem_cache *s, struct kmem_cache_node *n,
1243                                         struct page *page) {}
1244 unsigned long kmem_cache_flags(unsigned long object_size,
1245         unsigned long flags, const char *name,
1246         void (*ctor)(void *))
1247 {
1248         return flags;
1249 }
1250 #define slub_debug 0
1251
1252 #define disable_higher_order_debug 0
1253
1254 static inline unsigned long slabs_node(struct kmem_cache *s, int node)
1255                                                         { return 0; }
1256 static inline unsigned long node_nr_slabs(struct kmem_cache_node *n)
1257                                                         { return 0; }
1258 static inline void inc_slabs_node(struct kmem_cache *s, int node,
1259                                                         int objects) {}
1260 static inline void dec_slabs_node(struct kmem_cache *s, int node,
1261                                                         int objects) {}
1262
1263 #endif /* CONFIG_SLUB_DEBUG */
1264
1265 /*
1266  * Hooks for other subsystems that check memory allocations. In a typical
1267  * production configuration these hooks all should produce no code at all.
1268  */
1269 static inline void kmalloc_large_node_hook(void *ptr, size_t size, gfp_t flags)
1270 {
1271         kmemleak_alloc(ptr, size, 1, flags);
1272         kasan_kmalloc_large(ptr, size);
1273 }
1274
1275 static inline void kfree_hook(const void *x)
1276 {
1277         kmemleak_free(x);
1278         kasan_kfree_large(x);
1279 }
1280
1281 static inline void slab_free_hook(struct kmem_cache *s, void *x)
1282 {
1283         kmemleak_free_recursive(x, s->flags);
1284
1285         /*
1286          * Trouble is that we may no longer disable interrupts in the fast path
1287          * So in order to make the debug calls that expect irqs to be
1288          * disabled we need to disable interrupts temporarily.
1289          */
1290 #if defined(CONFIG_KMEMCHECK) || defined(CONFIG_LOCKDEP)
1291         {
1292                 unsigned long flags;
1293
1294                 local_irq_save(flags);
1295                 kmemcheck_slab_free(s, x, s->object_size);
1296                 debug_check_no_locks_freed(x, s->object_size);
1297                 local_irq_restore(flags);
1298         }
1299 #endif
1300         if (!(s->flags & SLAB_DEBUG_OBJECTS))
1301                 debug_check_no_obj_freed(x, s->object_size);
1302
1303         kasan_slab_free(s, x);
1304 }
1305
1306 static inline void slab_free_freelist_hook(struct kmem_cache *s,
1307                                            void *head, void *tail)
1308 {
1309 /*
1310  * Compiler cannot detect this function can be removed if slab_free_hook()
1311  * evaluates to nothing.  Thus, catch all relevant config debug options here.
1312  */
1313 #if defined(CONFIG_KMEMCHECK) ||                \
1314         defined(CONFIG_LOCKDEP) ||              \
1315         defined(CONFIG_DEBUG_KMEMLEAK) ||       \
1316         defined(CONFIG_DEBUG_OBJECTS_FREE) ||   \
1317         defined(CONFIG_KASAN)
1318
1319         void *object = head;
1320         void *tail_obj = tail ? : head;
1321
1322         do {
1323                 slab_free_hook(s, object);
1324         } while ((object != tail_obj) &&
1325                  (object = get_freepointer(s, object)));
1326 #endif
1327 }
1328
1329 static void setup_object(struct kmem_cache *s, struct page *page,
1330                                 void *object)
1331 {
1332         setup_object_debug(s, page, object);
1333         if (unlikely(s->ctor)) {
1334                 kasan_unpoison_object_data(s, object);
1335                 s->ctor(object);
1336                 kasan_poison_object_data(s, object);
1337         }
1338 }
1339
1340 /*
1341  * Slab allocation and freeing
1342  */
1343 static inline struct page *alloc_slab_page(struct kmem_cache *s,
1344                 gfp_t flags, int node, struct kmem_cache_order_objects oo)
1345 {
1346         struct page *page;
1347         int order = oo_order(oo);
1348
1349         flags |= __GFP_NOTRACK;
1350
1351         if (node == NUMA_NO_NODE)
1352                 page = alloc_pages(flags, order);
1353         else
1354                 page = __alloc_pages_node(node, flags, order);
1355
1356         if (page && memcg_charge_slab(page, flags, order, s)) {
1357                 __free_pages(page, order);
1358                 page = NULL;
1359         }
1360
1361         return page;
1362 }
1363
1364 static struct page *allocate_slab(struct kmem_cache *s, gfp_t flags, int node)
1365 {
1366         struct page *page;
1367         struct kmem_cache_order_objects oo = s->oo;
1368         gfp_t alloc_gfp;
1369         void *start, *p;
1370         int idx, order;
1371
1372         flags &= gfp_allowed_mask;
1373
1374         if (gfpflags_allow_blocking(flags))
1375                 local_irq_enable();
1376
1377         flags |= s->allocflags;
1378
1379         /*
1380          * Let the initial higher-order allocation fail under memory pressure
1381          * so we fall-back to the minimum order allocation.
1382          */
1383         alloc_gfp = (flags | __GFP_NOWARN | __GFP_NORETRY) & ~__GFP_NOFAIL;
1384         if ((alloc_gfp & __GFP_DIRECT_RECLAIM) && oo_order(oo) > oo_order(s->min))
1385                 alloc_gfp = (alloc_gfp | __GFP_NOMEMALLOC) & ~__GFP_DIRECT_RECLAIM;
1386
1387         page = alloc_slab_page(s, alloc_gfp, node, oo);
1388         if (unlikely(!page)) {
1389                 oo = s->min;
1390                 alloc_gfp = flags;
1391                 /*
1392                  * Allocation may have failed due to fragmentation.
1393                  * Try a lower order alloc if possible
1394                  */
1395                 page = alloc_slab_page(s, alloc_gfp, node, oo);
1396                 if (unlikely(!page))
1397                         goto out;
1398                 stat(s, ORDER_FALLBACK);
1399         }
1400
1401         if (kmemcheck_enabled &&
1402             !(s->flags & (SLAB_NOTRACK | DEBUG_DEFAULT_FLAGS))) {
1403                 int pages = 1 << oo_order(oo);
1404
1405                 kmemcheck_alloc_shadow(page, oo_order(oo), alloc_gfp, node);
1406
1407                 /*
1408                  * Objects from caches that have a constructor don't get
1409                  * cleared when they're allocated, so we need to do it here.
1410                  */
1411                 if (s->ctor)
1412                         kmemcheck_mark_uninitialized_pages(page, pages);
1413                 else
1414                         kmemcheck_mark_unallocated_pages(page, pages);
1415         }
1416
1417         page->objects = oo_objects(oo);
1418
1419         order = compound_order(page);
1420         page->slab_cache = s;
1421         __SetPageSlab(page);
1422         if (page_is_pfmemalloc(page))
1423                 SetPageSlabPfmemalloc(page);
1424
1425         start = page_address(page);
1426
1427         if (unlikely(s->flags & SLAB_POISON))
1428                 memset(start, POISON_INUSE, PAGE_SIZE << order);
1429
1430         kasan_poison_slab(page);
1431
1432         for_each_object_idx(p, idx, s, start, page->objects) {
1433                 setup_object(s, page, p);
1434                 if (likely(idx < page->objects))
1435                         set_freepointer(s, p, p + s->size);
1436                 else
1437                         set_freepointer(s, p, NULL);
1438         }
1439
1440         page->freelist = start;
1441         page->inuse = page->objects;
1442         page->frozen = 1;
1443
1444 out:
1445         if (gfpflags_allow_blocking(flags))
1446                 local_irq_disable();
1447         if (!page)
1448                 return NULL;
1449
1450         mod_zone_page_state(page_zone(page),
1451                 (s->flags & SLAB_RECLAIM_ACCOUNT) ?
1452                 NR_SLAB_RECLAIMABLE : NR_SLAB_UNRECLAIMABLE,
1453                 1 << oo_order(oo));
1454
1455         inc_slabs_node(s, page_to_nid(page), page->objects);
1456
1457         return page;
1458 }
1459
1460 static struct page *new_slab(struct kmem_cache *s, gfp_t flags, int node)
1461 {
1462         if (unlikely(flags & GFP_SLAB_BUG_MASK)) {
1463                 pr_emerg("gfp: %u\n", flags & GFP_SLAB_BUG_MASK);
1464                 BUG();
1465         }
1466
1467         return allocate_slab(s,
1468                 flags & (GFP_RECLAIM_MASK | GFP_CONSTRAINT_MASK), node);
1469 }
1470
1471 static void __free_slab(struct kmem_cache *s, struct page *page)
1472 {
1473         int order = compound_order(page);
1474         int pages = 1 << order;
1475
1476         if (s->flags & SLAB_CONSISTENCY_CHECKS) {
1477                 void *p;
1478
1479                 slab_pad_check(s, page);
1480                 for_each_object(p, s, page_address(page),
1481                                                 page->objects)
1482                         check_object(s, page, p, SLUB_RED_INACTIVE);
1483         }
1484
1485         kmemcheck_free_shadow(page, compound_order(page));
1486
1487         mod_zone_page_state(page_zone(page),
1488                 (s->flags & SLAB_RECLAIM_ACCOUNT) ?
1489                 NR_SLAB_RECLAIMABLE : NR_SLAB_UNRECLAIMABLE,
1490                 -pages);
1491
1492         __ClearPageSlabPfmemalloc(page);
1493         __ClearPageSlab(page);
1494
1495         page_mapcount_reset(page);
1496         if (current->reclaim_state)
1497                 current->reclaim_state->reclaimed_slab += pages;
1498         __free_kmem_pages(page, order);
1499 }
1500
1501 #define need_reserve_slab_rcu                                           \
1502         (sizeof(((struct page *)NULL)->lru) < sizeof(struct rcu_head))
1503
1504 static void rcu_free_slab(struct rcu_head *h)
1505 {
1506         struct page *page;
1507
1508         if (need_reserve_slab_rcu)
1509                 page = virt_to_head_page(h);
1510         else
1511                 page = container_of((struct list_head *)h, struct page, lru);
1512
1513         __free_slab(page->slab_cache, page);
1514 }
1515
1516 static void free_slab(struct kmem_cache *s, struct page *page)
1517 {
1518         if (unlikely(s->flags & SLAB_DESTROY_BY_RCU)) {
1519                 struct rcu_head *head;
1520
1521                 if (need_reserve_slab_rcu) {
1522                         int order = compound_order(page);
1523                         int offset = (PAGE_SIZE << order) - s->reserved;
1524
1525                         VM_BUG_ON(s->reserved != sizeof(*head));
1526                         head = page_address(page) + offset;
1527                 } else {
1528                         head = &page->rcu_head;
1529                 }
1530
1531                 call_rcu(head, rcu_free_slab);
1532         } else
1533                 __free_slab(s, page);
1534 }
1535
1536 static void discard_slab(struct kmem_cache *s, struct page *page)
1537 {
1538         dec_slabs_node(s, page_to_nid(page), page->objects);
1539         free_slab(s, page);
1540 }
1541
1542 /*
1543  * Management of partially allocated slabs.
1544  */
1545 static inline void
1546 __add_partial(struct kmem_cache_node *n, struct page *page, int tail)
1547 {
1548         n->nr_partial++;
1549         if (tail == DEACTIVATE_TO_TAIL)
1550                 list_add_tail(&page->lru, &n->partial);
1551         else
1552                 list_add(&page->lru, &n->partial);
1553 }
1554
1555 static inline void add_partial(struct kmem_cache_node *n,
1556                                 struct page *page, int tail)
1557 {
1558         lockdep_assert_held(&n->list_lock);
1559         __add_partial(n, page, tail);
1560 }
1561
1562 static inline void remove_partial(struct kmem_cache_node *n,
1563                                         struct page *page)
1564 {
1565         lockdep_assert_held(&n->list_lock);
1566         list_del(&page->lru);
1567         n->nr_partial--;
1568 }
1569
1570 /*
1571  * Remove slab from the partial list, freeze it and
1572  * return the pointer to the freelist.
1573  *
1574  * Returns a list of objects or NULL if it fails.
1575  */
1576 static inline void *acquire_slab(struct kmem_cache *s,
1577                 struct kmem_cache_node *n, struct page *page,
1578                 int mode, int *objects)
1579 {
1580         void *freelist;
1581         unsigned long counters;
1582         struct page new;
1583
1584         lockdep_assert_held(&n->list_lock);
1585
1586         /*
1587          * Zap the freelist and set the frozen bit.
1588          * The old freelist is the list of objects for the
1589          * per cpu allocation list.
1590          */
1591         freelist = page->freelist;
1592         counters = page->counters;
1593         new.counters = counters;
1594         *objects = new.objects - new.inuse;
1595         if (mode) {
1596                 new.inuse = page->objects;
1597                 new.freelist = NULL;
1598         } else {
1599                 new.freelist = freelist;
1600         }
1601
1602         VM_BUG_ON(new.frozen);
1603         new.frozen = 1;
1604
1605         if (!__cmpxchg_double_slab(s, page,
1606                         freelist, counters,
1607                         new.freelist, new.counters,
1608                         "acquire_slab"))
1609                 return NULL;
1610
1611         remove_partial(n, page);
1612         WARN_ON(!freelist);
1613         return freelist;
1614 }
1615
1616 static void put_cpu_partial(struct kmem_cache *s, struct page *page, int drain);
1617 static inline bool pfmemalloc_match(struct page *page, gfp_t gfpflags);
1618
1619 /*
1620  * Try to allocate a partial slab from a specific node.
1621  */
1622 static void *get_partial_node(struct kmem_cache *s, struct kmem_cache_node *n,
1623                                 struct kmem_cache_cpu *c, gfp_t flags)
1624 {
1625         struct page *page, *page2;
1626         void *object = NULL;
1627         int available = 0;
1628         int objects;
1629
1630         /*
1631          * Racy check. If we mistakenly see no partial slabs then we
1632          * just allocate an empty slab. If we mistakenly try to get a
1633          * partial slab and there is none available then get_partials()
1634          * will return NULL.
1635          */
1636         if (!n || !n->nr_partial)
1637                 return NULL;
1638
1639         spin_lock(&n->list_lock);
1640         list_for_each_entry_safe(page, page2, &n->partial, lru) {
1641                 void *t;
1642
1643                 if (!pfmemalloc_match(page, flags))
1644                         continue;
1645
1646                 t = acquire_slab(s, n, page, object == NULL, &objects);
1647                 if (!t)
1648                         break;
1649
1650                 available += objects;
1651                 if (!object) {
1652                         c->page = page;
1653                         stat(s, ALLOC_FROM_PARTIAL);
1654                         object = t;
1655                 } else {
1656                         put_cpu_partial(s, page, 0);
1657                         stat(s, CPU_PARTIAL_NODE);
1658                 }
1659                 if (!kmem_cache_has_cpu_partial(s)
1660                         || available > s->cpu_partial / 2)
1661                         break;
1662
1663         }
1664         spin_unlock(&n->list_lock);
1665         return object;
1666 }
1667
1668 /*
1669  * Get a page from somewhere. Search in increasing NUMA distances.
1670  */
1671 static void *get_any_partial(struct kmem_cache *s, gfp_t flags,
1672                 struct kmem_cache_cpu *c)
1673 {
1674 #ifdef CONFIG_NUMA
1675         struct zonelist *zonelist;
1676         struct zoneref *z;
1677         struct zone *zone;
1678         enum zone_type high_zoneidx = gfp_zone(flags);
1679         void *object;
1680         unsigned int cpuset_mems_cookie;
1681
1682         /*
1683          * The defrag ratio allows a configuration of the tradeoffs between
1684          * inter node defragmentation and node local allocations. A lower
1685          * defrag_ratio increases the tendency to do local allocations
1686          * instead of attempting to obtain partial slabs from other nodes.
1687          *
1688          * If the defrag_ratio is set to 0 then kmalloc() always
1689          * returns node local objects. If the ratio is higher then kmalloc()
1690          * may return off node objects because partial slabs are obtained
1691          * from other nodes and filled up.
1692          *
1693          * If /sys/kernel/slab/xx/defrag_ratio is set to 100 (which makes
1694          * defrag_ratio = 1000) then every (well almost) allocation will
1695          * first attempt to defrag slab caches on other nodes. This means
1696          * scanning over all nodes to look for partial slabs which may be
1697          * expensive if we do it every time we are trying to find a slab
1698          * with available objects.
1699          */
1700         if (!s->remote_node_defrag_ratio ||
1701                         get_cycles() % 1024 > s->remote_node_defrag_ratio)
1702                 return NULL;
1703
1704         do {
1705                 cpuset_mems_cookie = read_mems_allowed_begin();
1706                 zonelist = node_zonelist(mempolicy_slab_node(), flags);
1707                 for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
1708                         struct kmem_cache_node *n;
1709
1710                         n = get_node(s, zone_to_nid(zone));
1711
1712                         if (n && cpuset_zone_allowed(zone, flags) &&
1713                                         n->nr_partial > s->min_partial) {
1714                                 object = get_partial_node(s, n, c, flags);
1715                                 if (object) {
1716                                         /*
1717                                          * Don't check read_mems_allowed_retry()
1718                                          * here - if mems_allowed was updated in
1719                                          * parallel, that was a harmless race
1720                                          * between allocation and the cpuset
1721                                          * update
1722                                          */
1723                                         return object;
1724                                 }
1725                         }
1726                 }
1727         } while (read_mems_allowed_retry(cpuset_mems_cookie));
1728 #endif
1729         return NULL;
1730 }
1731
1732 /*
1733  * Get a partial page, lock it and return it.
1734  */
1735 static void *get_partial(struct kmem_cache *s, gfp_t flags, int node,
1736                 struct kmem_cache_cpu *c)
1737 {
1738         void *object;
1739         int searchnode = node;
1740
1741         if (node == NUMA_NO_NODE)
1742                 searchnode = numa_mem_id();
1743         else if (!node_present_pages(node))
1744                 searchnode = node_to_mem_node(node);
1745
1746         object = get_partial_node(s, get_node(s, searchnode), c, flags);
1747         if (object || node != NUMA_NO_NODE)
1748                 return object;
1749
1750         return get_any_partial(s, flags, c);
1751 }
1752
1753 #ifdef CONFIG_PREEMPT
1754 /*
1755  * Calculate the next globally unique transaction for disambiguiation
1756  * during cmpxchg. The transactions start with the cpu number and are then
1757  * incremented by CONFIG_NR_CPUS.
1758  */
1759 #define TID_STEP  roundup_pow_of_two(CONFIG_NR_CPUS)
1760 #else
1761 /*
1762  * No preemption supported therefore also no need to check for
1763  * different cpus.
1764  */
1765 #define TID_STEP 1
1766 #endif
1767
1768 static inline unsigned long next_tid(unsigned long tid)
1769 {
1770         return tid + TID_STEP;
1771 }
1772
1773 static inline unsigned int tid_to_cpu(unsigned long tid)
1774 {
1775         return tid % TID_STEP;
1776 }
1777
1778 static inline unsigned long tid_to_event(unsigned long tid)
1779 {
1780         return tid / TID_STEP;
1781 }
1782
1783 static inline unsigned int init_tid(int cpu)
1784 {
1785         return cpu;
1786 }
1787
1788 static inline void note_cmpxchg_failure(const char *n,
1789                 const struct kmem_cache *s, unsigned long tid)
1790 {
1791 #ifdef SLUB_DEBUG_CMPXCHG
1792         unsigned long actual_tid = __this_cpu_read(s->cpu_slab->tid);
1793
1794         pr_info("%s %s: cmpxchg redo ", n, s->name);
1795
1796 #ifdef CONFIG_PREEMPT
1797         if (tid_to_cpu(tid) != tid_to_cpu(actual_tid))
1798                 pr_warn("due to cpu change %d -> %d\n",
1799                         tid_to_cpu(tid), tid_to_cpu(actual_tid));
1800         else
1801 #endif
1802         if (tid_to_event(tid) != tid_to_event(actual_tid))
1803                 pr_warn("due to cpu running other code. Event %ld->%ld\n",
1804                         tid_to_event(tid), tid_to_event(actual_tid));
1805         else
1806                 pr_warn("for unknown reason: actual=%lx was=%lx target=%lx\n",
1807                         actual_tid, tid, next_tid(tid));
1808 #endif
1809         stat(s, CMPXCHG_DOUBLE_CPU_FAIL);
1810 }
1811
1812 static void init_kmem_cache_cpus(struct kmem_cache *s)
1813 {
1814         int cpu;
1815
1816         for_each_possible_cpu(cpu)
1817                 per_cpu_ptr(s->cpu_slab, cpu)->tid = init_tid(cpu);
1818 }
1819
1820 /*
1821  * Remove the cpu slab
1822  */
1823 static void deactivate_slab(struct kmem_cache *s, struct page *page,
1824                                 void *freelist)
1825 {
1826         enum slab_modes { M_NONE, M_PARTIAL, M_FULL, M_FREE };
1827         struct kmem_cache_node *n = get_node(s, page_to_nid(page));
1828         int lock = 0;
1829         enum slab_modes l = M_NONE, m = M_NONE;
1830         void *nextfree;
1831         int tail = DEACTIVATE_TO_HEAD;
1832         struct page new;
1833         struct page old;
1834
1835         if (page->freelist) {
1836                 stat(s, DEACTIVATE_REMOTE_FREES);
1837                 tail = DEACTIVATE_TO_TAIL;
1838         }
1839
1840         /*
1841          * Stage one: Free all available per cpu objects back
1842          * to the page freelist while it is still frozen. Leave the
1843          * last one.
1844          *
1845          * There is no need to take the list->lock because the page
1846          * is still frozen.
1847          */
1848         while (freelist && (nextfree = get_freepointer(s, freelist))) {
1849                 void *prior;
1850                 unsigned long counters;
1851
1852                 do {
1853                         prior = page->freelist;
1854                         counters = page->counters;
1855                         set_freepointer(s, freelist, prior);
1856                         new.counters = counters;
1857                         new.inuse--;
1858                         VM_BUG_ON(!new.frozen);
1859
1860                 } while (!__cmpxchg_double_slab(s, page,
1861                         prior, counters,
1862                         freelist, new.counters,
1863                         "drain percpu freelist"));
1864
1865                 freelist = nextfree;
1866         }
1867
1868         /*
1869          * Stage two: Ensure that the page is unfrozen while the
1870          * list presence reflects the actual number of objects
1871          * during unfreeze.
1872          *
1873          * We setup the list membership and then perform a cmpxchg
1874          * with the count. If there is a mismatch then the page
1875          * is not unfrozen but the page is on the wrong list.
1876          *
1877          * Then we restart the process which may have to remove
1878          * the page from the list that we just put it on again
1879          * because the number of objects in the slab may have
1880          * changed.
1881          */
1882 redo:
1883
1884         old.freelist = page->freelist;
1885         old.counters = page->counters;
1886         VM_BUG_ON(!old.frozen);
1887
1888         /* Determine target state of the slab */
1889         new.counters = old.counters;
1890         if (freelist) {
1891                 new.inuse--;
1892                 set_freepointer(s, freelist, old.freelist);
1893                 new.freelist = freelist;
1894         } else
1895                 new.freelist = old.freelist;
1896
1897         new.frozen = 0;
1898
1899         if (!new.inuse && n->nr_partial >= s->min_partial)
1900                 m = M_FREE;
1901         else if (new.freelist) {
1902                 m = M_PARTIAL;
1903                 if (!lock) {
1904                         lock = 1;
1905                         /*
1906                          * Taking the spinlock removes the possiblity
1907                          * that acquire_slab() will see a slab page that
1908                          * is frozen
1909                          */
1910                         spin_lock(&n->list_lock);
1911                 }
1912         } else {
1913                 m = M_FULL;
1914                 if (kmem_cache_debug(s) && !lock) {
1915                         lock = 1;
1916                         /*
1917                          * This also ensures that the scanning of full
1918                          * slabs from diagnostic functions will not see
1919                          * any frozen slabs.
1920                          */
1921                         spin_lock(&n->list_lock);
1922                 }
1923         }
1924
1925         if (l != m) {
1926
1927                 if (l == M_PARTIAL)
1928
1929                         remove_partial(n, page);
1930
1931                 else if (l == M_FULL)
1932
1933                         remove_full(s, n, page);
1934
1935                 if (m == M_PARTIAL) {
1936
1937                         add_partial(n, page, tail);
1938                         stat(s, tail);
1939
1940                 } else if (m == M_FULL) {
1941
1942                         stat(s, DEACTIVATE_FULL);
1943                         add_full(s, n, page);
1944
1945                 }
1946         }
1947
1948         l = m;
1949         if (!__cmpxchg_double_slab(s, page,
1950                                 old.freelist, old.counters,
1951                                 new.freelist, new.counters,
1952                                 "unfreezing slab"))
1953                 goto redo;
1954
1955         if (lock)
1956                 spin_unlock(&n->list_lock);
1957
1958         if (m == M_FREE) {
1959                 stat(s, DEACTIVATE_EMPTY);
1960                 discard_slab(s, page);
1961                 stat(s, FREE_SLAB);
1962         }
1963 }
1964
1965 /*
1966  * Unfreeze all the cpu partial slabs.
1967  *
1968  * This function must be called with interrupts disabled
1969  * for the cpu using c (or some other guarantee must be there
1970  * to guarantee no concurrent accesses).
1971  */
1972 static void unfreeze_partials(struct kmem_cache *s,
1973                 struct kmem_cache_cpu *c)
1974 {
1975 #ifdef CONFIG_SLUB_CPU_PARTIAL
1976         struct kmem_cache_node *n = NULL, *n2 = NULL;
1977         struct page *page, *discard_page = NULL;
1978
1979         while ((page = c->partial)) {
1980                 struct page new;
1981                 struct page old;
1982
1983                 c->partial = page->next;
1984
1985                 n2 = get_node(s, page_to_nid(page));
1986                 if (n != n2) {
1987                         if (n)
1988                                 spin_unlock(&n->list_lock);
1989
1990                         n = n2;
1991                         spin_lock(&n->list_lock);
1992                 }
1993
1994                 do {
1995
1996                         old.freelist = page->freelist;
1997                         old.counters = page->counters;
1998                         VM_BUG_ON(!old.frozen);
1999
2000                         new.counters = old.counters;
2001                         new.freelist = old.freelist;
2002
2003                         new.frozen = 0;
2004
2005                 } while (!__cmpxchg_double_slab(s, page,
2006                                 old.freelist, old.counters,
2007                                 new.freelist, new.counters,
2008                                 "unfreezing slab"));
2009
2010                 if (unlikely(!new.inuse && n->nr_partial >= s->min_partial)) {
2011                         page->next = discard_page;
2012                         discard_page = page;
2013                 } else {
2014                         add_partial(n, page, DEACTIVATE_TO_TAIL);
2015                         stat(s, FREE_ADD_PARTIAL);
2016                 }
2017         }
2018
2019         if (n)
2020                 spin_unlock(&n->list_lock);
2021
2022         while (discard_page) {
2023                 page = discard_page;
2024                 discard_page = discard_page->next;
2025
2026                 stat(s, DEACTIVATE_EMPTY);
2027                 discard_slab(s, page);
2028                 stat(s, FREE_SLAB);
2029         }
2030 #endif
2031 }
2032
2033 /*
2034  * Put a page that was just frozen (in __slab_free) into a partial page
2035  * slot if available. This is done without interrupts disabled and without
2036  * preemption disabled. The cmpxchg is racy and may put the partial page
2037  * onto a random cpus partial slot.
2038  *
2039  * If we did not find a slot then simply move all the partials to the
2040  * per node partial list.
2041  */
2042 static void put_cpu_partial(struct kmem_cache *s, struct page *page, int drain)
2043 {
2044 #ifdef CONFIG_SLUB_CPU_PARTIAL
2045         struct page *oldpage;
2046         int pages;
2047         int pobjects;
2048
2049         preempt_disable();
2050         do {
2051                 pages = 0;
2052                 pobjects = 0;
2053                 oldpage = this_cpu_read(s->cpu_slab->partial);
2054
2055                 if (oldpage) {
2056                         pobjects = oldpage->pobjects;
2057                         pages = oldpage->pages;
2058                         if (drain && pobjects > s->cpu_partial) {
2059                                 unsigned long flags;
2060                                 /*
2061                                  * partial array is full. Move the existing
2062                                  * set to the per node partial list.
2063                                  */
2064                                 local_irq_save(flags);
2065                                 unfreeze_partials(s, this_cpu_ptr(s->cpu_slab));
2066                                 local_irq_restore(flags);
2067                                 oldpage = NULL;
2068                                 pobjects = 0;
2069                                 pages = 0;
2070                                 stat(s, CPU_PARTIAL_DRAIN);
2071                         }
2072                 }
2073
2074                 pages++;
2075                 pobjects += page->objects - page->inuse;
2076
2077                 page->pages = pages;
2078                 page->pobjects = pobjects;
2079                 page->next = oldpage;
2080
2081         } while (this_cpu_cmpxchg(s->cpu_slab->partial, oldpage, page)
2082                                                                 != oldpage);
2083         if (unlikely(!s->cpu_partial)) {
2084                 unsigned long flags;
2085
2086                 local_irq_save(flags);
2087                 unfreeze_partials(s, this_cpu_ptr(s->cpu_slab));
2088                 local_irq_restore(flags);
2089         }
2090         preempt_enable();
2091 #endif
2092 }
2093
2094 static inline void flush_slab(struct kmem_cache *s, struct kmem_cache_cpu *c)
2095 {
2096         stat(s, CPUSLAB_FLUSH);
2097         deactivate_slab(s, c->page, c->freelist);
2098
2099         c->tid = next_tid(c->tid);
2100         c->page = NULL;
2101         c->freelist = NULL;
2102 }
2103
2104 /*
2105  * Flush cpu slab.
2106  *
2107  * Called from IPI handler with interrupts disabled.
2108  */
2109 static inline void __flush_cpu_slab(struct kmem_cache *s, int cpu)
2110 {
2111         struct kmem_cache_cpu *c = per_cpu_ptr(s->cpu_slab, cpu);
2112
2113         if (likely(c)) {
2114                 if (c->page)
2115                         flush_slab(s, c);
2116
2117                 unfreeze_partials(s, c);
2118         }
2119 }
2120
2121 static void flush_cpu_slab(void *d)
2122 {
2123         struct kmem_cache *s = d;
2124
2125         __flush_cpu_slab(s, smp_processor_id());
2126 }
2127
2128 static bool has_cpu_slab(int cpu, void *info)
2129 {
2130         struct kmem_cache *s = info;
2131         struct kmem_cache_cpu *c = per_cpu_ptr(s->cpu_slab, cpu);
2132
2133         return c->page || c->partial;
2134 }
2135
2136 static void flush_all(struct kmem_cache *s)
2137 {
2138         on_each_cpu_cond(has_cpu_slab, flush_cpu_slab, s, 1, GFP_ATOMIC);
2139 }
2140
2141 /*
2142  * Check if the objects in a per cpu structure fit numa
2143  * locality expectations.
2144  */
2145 static inline int node_match(struct page *page, int node)
2146 {
2147 #ifdef CONFIG_NUMA
2148         if (!page || (node != NUMA_NO_NODE && page_to_nid(page) != node))
2149                 return 0;
2150 #endif
2151         return 1;
2152 }
2153
2154 #ifdef CONFIG_SLUB_DEBUG
2155 static int count_free(struct page *page)
2156 {
2157         return page->objects - page->inuse;
2158 }
2159
2160 static inline unsigned long node_nr_objs(struct kmem_cache_node *n)
2161 {
2162         return atomic_long_read(&n->total_objects);
2163 }
2164 #endif /* CONFIG_SLUB_DEBUG */
2165
2166 #if defined(CONFIG_SLUB_DEBUG) || defined(CONFIG_SYSFS)
2167 static unsigned long count_partial(struct kmem_cache_node *n,
2168                                         int (*get_count)(struct page *))
2169 {
2170         unsigned long flags;
2171         unsigned long x = 0;
2172         struct page *page;
2173
2174         spin_lock_irqsave(&n->list_lock, flags);
2175         list_for_each_entry(page, &n->partial, lru)
2176                 x += get_count(page);
2177         spin_unlock_irqrestore(&n->list_lock, flags);
2178         return x;
2179 }
2180 #endif /* CONFIG_SLUB_DEBUG || CONFIG_SYSFS */
2181
2182 static noinline void
2183 slab_out_of_memory(struct kmem_cache *s, gfp_t gfpflags, int nid)
2184 {
2185 #ifdef CONFIG_SLUB_DEBUG
2186         static DEFINE_RATELIMIT_STATE(slub_oom_rs, DEFAULT_RATELIMIT_INTERVAL,
2187                                       DEFAULT_RATELIMIT_BURST);
2188         int node;
2189         struct kmem_cache_node *n;
2190
2191         if ((gfpflags & __GFP_NOWARN) || !__ratelimit(&slub_oom_rs))
2192                 return;
2193
2194         pr_warn("SLUB: Unable to allocate memory on node %d (gfp=0x%x)\n",
2195                 nid, gfpflags);
2196         pr_warn("  cache: %s, object size: %d, buffer size: %d, default order: %d, min order: %d\n",
2197                 s->name, s->object_size, s->size, oo_order(s->oo),
2198                 oo_order(s->min));
2199
2200         if (oo_order(s->min) > get_order(s->object_size))
2201                 pr_warn("  %s debugging increased min order, use slub_debug=O to disable.\n",
2202                         s->name);
2203
2204         for_each_kmem_cache_node(s, node, n) {
2205                 unsigned long nr_slabs;
2206                 unsigned long nr_objs;
2207                 unsigned long nr_free;
2208
2209                 nr_free  = count_partial(n, count_free);
2210                 nr_slabs = node_nr_slabs(n);
2211                 nr_objs  = node_nr_objs(n);
2212
2213                 pr_warn("  node %d: slabs: %ld, objs: %ld, free: %ld\n",
2214                         node, nr_slabs, nr_objs, nr_free);
2215         }
2216 #endif
2217 }
2218
2219 static inline void *new_slab_objects(struct kmem_cache *s, gfp_t flags,
2220                         int node, struct kmem_cache_cpu **pc)
2221 {
2222         void *freelist;
2223         struct kmem_cache_cpu *c = *pc;
2224         struct page *page;
2225
2226         freelist = get_partial(s, flags, node, c);
2227
2228         if (freelist)
2229                 return freelist;
2230
2231         page = new_slab(s, flags, node);
2232         if (page) {
2233                 c = raw_cpu_ptr(s->cpu_slab);
2234                 if (c->page)
2235                         flush_slab(s, c);
2236
2237                 /*
2238                  * No other reference to the page yet so we can
2239                  * muck around with it freely without cmpxchg
2240                  */
2241                 freelist = page->freelist;
2242                 page->freelist = NULL;
2243
2244                 stat(s, ALLOC_SLAB);
2245                 c->page = page;
2246                 *pc = c;
2247         } else
2248                 freelist = NULL;
2249
2250         return freelist;
2251 }
2252
2253 static inline bool pfmemalloc_match(struct page *page, gfp_t gfpflags)
2254 {
2255         if (unlikely(PageSlabPfmemalloc(page)))
2256                 return gfp_pfmemalloc_allowed(gfpflags);
2257
2258         return true;
2259 }
2260
2261 /*
2262  * Check the page->freelist of a page and either transfer the freelist to the
2263  * per cpu freelist or deactivate the page.
2264  *
2265  * The page is still frozen if the return value is not NULL.
2266  *
2267  * If this function returns NULL then the page has been unfrozen.
2268  *
2269  * This function must be called with interrupt disabled.
2270  */
2271 static inline void *get_freelist(struct kmem_cache *s, struct page *page)
2272 {
2273         struct page new;
2274         unsigned long counters;
2275         void *freelist;
2276
2277         do {
2278                 freelist = page->freelist;
2279                 counters = page->counters;
2280
2281                 new.counters = counters;
2282                 VM_BUG_ON(!new.frozen);
2283
2284                 new.inuse = page->objects;
2285                 new.frozen = freelist != NULL;
2286
2287         } while (!__cmpxchg_double_slab(s, page,
2288                 freelist, counters,
2289                 NULL, new.counters,
2290                 "get_freelist"));
2291
2292         return freelist;
2293 }
2294
2295 /*
2296  * Slow path. The lockless freelist is empty or we need to perform
2297  * debugging duties.
2298  *
2299  * Processing is still very fast if new objects have been freed to the
2300  * regular freelist. In that case we simply take over the regular freelist
2301  * as the lockless freelist and zap the regular freelist.
2302  *
2303  * If that is not working then we fall back to the partial lists. We take the
2304  * first element of the freelist as the object to allocate now and move the
2305  * rest of the freelist to the lockless freelist.
2306  *
2307  * And if we were unable to get a new slab from the partial slab lists then
2308  * we need to allocate a new slab. This is the slowest path since it involves
2309  * a call to the page allocator and the setup of a new slab.
2310  *
2311  * Version of __slab_alloc to use when we know that interrupts are
2312  * already disabled (which is the case for bulk allocation).
2313  */
2314 static void *___slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
2315                           unsigned long addr, struct kmem_cache_cpu *c)
2316 {
2317         void *freelist;
2318         struct page *page;
2319
2320         page = c->page;
2321         if (!page)
2322                 goto new_slab;
2323 redo:
2324
2325         if (unlikely(!node_match(page, node))) {
2326                 int searchnode = node;
2327
2328                 if (node != NUMA_NO_NODE && !node_present_pages(node))
2329                         searchnode = node_to_mem_node(node);
2330
2331                 if (unlikely(!node_match(page, searchnode))) {
2332                         stat(s, ALLOC_NODE_MISMATCH);
2333                         deactivate_slab(s, page, c->freelist);
2334                         c->page = NULL;
2335                         c->freelist = NULL;
2336                         goto new_slab;
2337                 }
2338         }
2339
2340         /*
2341          * By rights, we should be searching for a slab page that was
2342          * PFMEMALLOC but right now, we are losing the pfmemalloc
2343          * information when the page leaves the per-cpu allocator
2344          */
2345         if (unlikely(!pfmemalloc_match(page, gfpflags))) {
2346                 deactivate_slab(s, page, c->freelist);
2347                 c->page = NULL;
2348                 c->freelist = NULL;
2349                 goto new_slab;
2350         }
2351
2352         /* must check again c->freelist in case of cpu migration or IRQ */
2353         freelist = c->freelist;
2354         if (freelist)
2355                 goto load_freelist;
2356
2357         freelist = get_freelist(s, page);
2358
2359         if (!freelist) {
2360                 c->page = NULL;
2361                 stat(s, DEACTIVATE_BYPASS);
2362                 goto new_slab;
2363         }
2364
2365         stat(s, ALLOC_REFILL);
2366
2367 load_freelist:
2368         /*
2369          * freelist is pointing to the list of objects to be used.
2370          * page is pointing to the page from which the objects are obtained.
2371          * That page must be frozen for per cpu allocations to work.
2372          */
2373         VM_BUG_ON(!c->page->frozen);
2374         c->freelist = get_freepointer(s, freelist);
2375         c->tid = next_tid(c->tid);
2376         return freelist;
2377
2378 new_slab:
2379
2380         if (c->partial) {
2381                 page = c->page = c->partial;
2382                 c->partial = page->next;
2383                 stat(s, CPU_PARTIAL_ALLOC);
2384                 c->freelist = NULL;
2385                 goto redo;
2386         }
2387
2388         freelist = new_slab_objects(s, gfpflags, node, &c);
2389
2390         if (unlikely(!freelist)) {
2391                 slab_out_of_memory(s, gfpflags, node);
2392                 return NULL;
2393         }
2394
2395         page = c->page;
2396         if (likely(!kmem_cache_debug(s) && pfmemalloc_match(page, gfpflags)))
2397                 goto load_freelist;
2398
2399         /* Only entered in the debug case */
2400         if (kmem_cache_debug(s) &&
2401                         !alloc_debug_processing(s, page, freelist, addr))
2402                 goto new_slab;  /* Slab failed checks. Next slab needed */
2403
2404         deactivate_slab(s, page, get_freepointer(s, freelist));
2405         c->page = NULL;
2406         c->freelist = NULL;
2407         return freelist;
2408 }
2409
2410 /*
2411  * Another one that disabled interrupt and compensates for possible
2412  * cpu changes by refetching the per cpu area pointer.
2413  */
2414 static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node,
2415                           unsigned long addr, struct kmem_cache_cpu *c)
2416 {
2417         void *p;
2418         unsigned long flags;
2419
2420         local_irq_save(flags);
2421 #ifdef CONFIG_PREEMPT
2422         /*
2423          * We may have been preempted and rescheduled on a different
2424          * cpu before disabling interrupts. Need to reload cpu area
2425          * pointer.
2426          */
2427         c = this_cpu_ptr(s->cpu_slab);
2428 #endif
2429
2430         p = ___slab_alloc(s, gfpflags, node, addr, c);
2431         local_irq_restore(flags);
2432         return p;
2433 }
2434
2435 /*
2436  * Inlined fastpath so that allocation functions (kmalloc, kmem_cache_alloc)
2437  * have the fastpath folded into their functions. So no function call
2438  * overhead for requests that can be satisfied on the fastpath.
2439  *
2440  * The fastpath works by first checking if the lockless freelist can be used.
2441  * If not then __slab_alloc is called for slow processing.
2442  *
2443  * Otherwise we can simply pick the next object from the lockless free list.
2444  */
2445 static __always_inline void *slab_alloc_node(struct kmem_cache *s,
2446                 gfp_t gfpflags, int node, unsigned long addr)
2447 {
2448         void *object;
2449         struct kmem_cache_cpu *c;
2450         struct page *page;
2451         unsigned long tid;
2452
2453         s = slab_pre_alloc_hook(s, gfpflags);
2454         if (!s)
2455                 return NULL;
2456 redo:
2457         /*
2458          * Must read kmem_cache cpu data via this cpu ptr. Preemption is
2459          * enabled. We may switch back and forth between cpus while
2460          * reading from one cpu area. That does not matter as long
2461          * as we end up on the original cpu again when doing the cmpxchg.
2462          *
2463          * We should guarantee that tid and kmem_cache are retrieved on
2464          * the same cpu. It could be different if CONFIG_PREEMPT so we need
2465          * to check if it is matched or not.
2466          */
2467         do {
2468                 tid = this_cpu_read(s->cpu_slab->tid);
2469                 c = raw_cpu_ptr(s->cpu_slab);
2470         } while (IS_ENABLED(CONFIG_PREEMPT) &&
2471                  unlikely(tid != READ_ONCE(c->tid)));
2472
2473         /*
2474          * Irqless object alloc/free algorithm used here depends on sequence
2475          * of fetching cpu_slab's data. tid should be fetched before anything
2476          * on c to guarantee that object and page associated with previous tid
2477          * won't be used with current tid. If we fetch tid first, object and
2478          * page could be one associated with next tid and our alloc/free
2479          * request will be failed. In this case, we will retry. So, no problem.
2480          */
2481         barrier();
2482
2483         /*
2484          * The transaction ids are globally unique per cpu and per operation on
2485          * a per cpu queue. Thus they can be guarantee that the cmpxchg_double
2486          * occurs on the right processor and that there was no operation on the
2487          * linked list in between.
2488          */
2489
2490         object = c->freelist;
2491         page = c->page;
2492         if (unlikely(!object || !node_match(page, node))) {
2493                 object = __slab_alloc(s, gfpflags, node, addr, c);
2494                 stat(s, ALLOC_SLOWPATH);
2495         } else {
2496                 void *next_object = get_freepointer_safe(s, object);
2497
2498                 /*
2499                  * The cmpxchg will only match if there was no additional
2500                  * operation and if we are on the right processor.
2501                  *
2502                  * The cmpxchg does the following atomically (without lock
2503                  * semantics!)
2504                  * 1. Relocate first pointer to the current per cpu area.
2505                  * 2. Verify that tid and freelist have not been changed
2506                  * 3. If they were not changed replace tid and freelist
2507                  *
2508                  * Since this is without lock semantics the protection is only
2509                  * against code executing on this cpu *not* from access by
2510                  * other cpus.
2511                  */
2512                 if (unlikely(!this_cpu_cmpxchg_double(
2513                                 s->cpu_slab->freelist, s->cpu_slab->tid,
2514                                 object, tid,
2515                                 next_object, next_tid(tid)))) {
2516
2517                         note_cmpxchg_failure("slab_alloc", s, tid);
2518                         goto redo;
2519                 }
2520                 prefetch_freepointer(s, next_object);
2521                 stat(s, ALLOC_FASTPATH);
2522         }
2523
2524         if (unlikely(gfpflags & __GFP_ZERO) && object)
2525                 memset(object, 0, s->object_size);
2526
2527         slab_post_alloc_hook(s, gfpflags, 1, &object);
2528
2529         return object;
2530 }
2531
2532 static __always_inline void *slab_alloc(struct kmem_cache *s,
2533                 gfp_t gfpflags, unsigned long addr)
2534 {
2535         return slab_alloc_node(s, gfpflags, NUMA_NO_NODE, addr);
2536 }
2537
2538 void *kmem_cache_alloc(struct kmem_cache *s, gfp_t gfpflags)
2539 {
2540         void *ret = slab_alloc(s, gfpflags, _RET_IP_);
2541
2542         trace_kmem_cache_alloc(_RET_IP_, ret, s->object_size,
2543                                 s->size, gfpflags);
2544
2545         return ret;
2546 }
2547 EXPORT_SYMBOL(kmem_cache_alloc);
2548
2549 #ifdef CONFIG_TRACING
2550 void *kmem_cache_alloc_trace(struct kmem_cache *s, gfp_t gfpflags, size_t size)
2551 {
2552         void *ret = slab_alloc(s, gfpflags, _RET_IP_);
2553         trace_kmalloc(_RET_IP_, ret, size, s->size, gfpflags);
2554         kasan_kmalloc(s, ret, size);
2555         return ret;
2556 }
2557 EXPORT_SYMBOL(kmem_cache_alloc_trace);
2558 #endif
2559
2560 #ifdef CONFIG_NUMA
2561 void *kmem_cache_alloc_node(struct kmem_cache *s, gfp_t gfpflags, int node)
2562 {
2563         void *ret = slab_alloc_node(s, gfpflags, node, _RET_IP_);
2564
2565         trace_kmem_cache_alloc_node(_RET_IP_, ret,
2566                                     s->object_size, s->size, gfpflags, node);
2567
2568         return ret;
2569 }
2570 EXPORT_SYMBOL(kmem_cache_alloc_node);
2571
2572 #ifdef CONFIG_TRACING
2573 void *kmem_cache_alloc_node_trace(struct kmem_cache *s,
2574                                     gfp_t gfpflags,
2575                                     int node, size_t size)
2576 {
2577         void *ret = slab_alloc_node(s, gfpflags, node, _RET_IP_);
2578
2579         trace_kmalloc_node(_RET_IP_, ret,
2580                            size, s->size, gfpflags, node);
2581
2582         kasan_kmalloc(s, ret, size);
2583         return ret;
2584 }
2585 EXPORT_SYMBOL(kmem_cache_alloc_node_trace);
2586 #endif
2587 #endif
2588
2589 /*
2590  * Slow path handling. This may still be called frequently since objects
2591  * have a longer lifetime than the cpu slabs in most processing loads.
2592  *
2593  * So we still attempt to reduce cache line usage. Just take the slab
2594  * lock and free the item. If there is no additional partial page
2595  * handling required then we can return immediately.
2596  */
2597 static void __slab_free(struct kmem_cache *s, struct page *page,
2598                         void *head, void *tail, int cnt,
2599                         unsigned long addr)
2600
2601 {
2602         void *prior;
2603         int was_frozen;
2604         struct page new;
2605         unsigned long counters;
2606         struct kmem_cache_node *n = NULL;
2607         unsigned long uninitialized_var(flags);
2608
2609         stat(s, FREE_SLOWPATH);
2610
2611         if (kmem_cache_debug(s) &&
2612             !free_debug_processing(s, page, head, tail, cnt, addr))
2613                 return;
2614
2615         do {
2616                 if (unlikely(n)) {
2617                         spin_unlock_irqrestore(&n->list_lock, flags);
2618                         n = NULL;
2619                 }
2620                 prior = page->freelist;
2621                 counters = page->counters;
2622                 set_freepointer(s, tail, prior);
2623                 new.counters = counters;
2624                 was_frozen = new.frozen;
2625                 new.inuse -= cnt;
2626                 if ((!new.inuse || !prior) && !was_frozen) {
2627
2628                         if (kmem_cache_has_cpu_partial(s) && !prior) {
2629
2630                                 /*
2631                                  * Slab was on no list before and will be
2632                                  * partially empty
2633                                  * We can defer the list move and instead
2634                                  * freeze it.
2635                                  */
2636                                 new.frozen = 1;
2637
2638                         } else { /* Needs to be taken off a list */
2639
2640                                 n = get_node(s, page_to_nid(page));
2641                                 /*
2642                                  * Speculatively acquire the list_lock.
2643                                  * If the cmpxchg does not succeed then we may
2644                                  * drop the list_lock without any processing.
2645                                  *
2646                                  * Otherwise the list_lock will synchronize with
2647                                  * other processors updating the list of slabs.
2648                                  */
2649                                 spin_lock_irqsave(&n->list_lock, flags);
2650
2651                         }
2652                 }
2653
2654         } while (!cmpxchg_double_slab(s, page,
2655                 prior, counters,
2656                 head, new.counters,
2657                 "__slab_free"));
2658
2659         if (likely(!n)) {
2660
2661                 /*
2662                  * If we just froze the page then put it onto the
2663                  * per cpu partial list.
2664                  */
2665                 if (new.frozen && !was_frozen) {
2666                         put_cpu_partial(s, page, 1);
2667                         stat(s, CPU_PARTIAL_FREE);
2668                 }
2669                 /*
2670                  * The list lock was not taken therefore no list
2671                  * activity can be necessary.
2672                  */
2673                 if (was_frozen)
2674                         stat(s, FREE_FROZEN);
2675                 return;
2676         }
2677
2678         if (unlikely(!new.inuse && n->nr_partial >= s->min_partial))
2679                 goto slab_empty;
2680
2681         /*
2682          * Objects left in the slab. If it was not on the partial list before
2683          * then add it.
2684          */
2685         if (!kmem_cache_has_cpu_partial(s) && unlikely(!prior)) {
2686                 if (kmem_cache_debug(s))
2687                         remove_full(s, n, page);
2688                 add_partial(n, page, DEACTIVATE_TO_TAIL);
2689                 stat(s, FREE_ADD_PARTIAL);
2690         }
2691         spin_unlock_irqrestore(&n->list_lock, flags);
2692         return;
2693
2694 slab_empty:
2695         if (prior) {
2696                 /*
2697                  * Slab on the partial list.
2698                  */
2699                 remove_partial(n, page);
2700                 stat(s, FREE_REMOVE_PARTIAL);
2701         } else {
2702                 /* Slab must be on the full list */
2703                 remove_full(s, n, page);
2704         }
2705
2706         spin_unlock_irqrestore(&n->list_lock, flags);
2707         stat(s, FREE_SLAB);
2708         discard_slab(s, page);
2709 }
2710
2711 /*
2712  * Fastpath with forced inlining to produce a kfree and kmem_cache_free that
2713  * can perform fastpath freeing without additional function calls.
2714  *
2715  * The fastpath is only possible if we are freeing to the current cpu slab
2716  * of this processor. This typically the case if we have just allocated
2717  * the item before.
2718  *
2719  * If fastpath is not possible then fall back to __slab_free where we deal
2720  * with all sorts of special processing.
2721  *
2722  * Bulk free of a freelist with several objects (all pointing to the
2723  * same page) possible by specifying head and tail ptr, plus objects
2724  * count (cnt). Bulk free indicated by tail pointer being set.
2725  */
2726 static __always_inline void slab_free(struct kmem_cache *s, struct page *page,
2727                                       void *head, void *tail, int cnt,
2728                                       unsigned long addr)
2729 {
2730         void *tail_obj = tail ? : head;
2731         struct kmem_cache_cpu *c;
2732         unsigned long tid;
2733
2734         slab_free_freelist_hook(s, head, tail);
2735
2736 redo:
2737         /*
2738          * Determine the currently cpus per cpu slab.
2739          * The cpu may change afterward. However that does not matter since
2740          * data is retrieved via this pointer. If we are on the same cpu
2741          * during the cmpxchg then the free will succeed.
2742          */
2743         do {
2744                 tid = this_cpu_read(s->cpu_slab->tid);
2745                 c = raw_cpu_ptr(s->cpu_slab);
2746         } while (IS_ENABLED(CONFIG_PREEMPT) &&
2747                  unlikely(tid != READ_ONCE(c->tid)));
2748
2749         /* Same with comment on barrier() in slab_alloc_node() */
2750         barrier();
2751
2752         if (likely(page == c->page)) {
2753                 set_freepointer(s, tail_obj, c->freelist);
2754
2755                 if (unlikely(!this_cpu_cmpxchg_double(
2756                                 s->cpu_slab->freelist, s->cpu_slab->tid,
2757                                 c->freelist, tid,
2758                                 head, next_tid(tid)))) {
2759
2760                         note_cmpxchg_failure("slab_free", s, tid);
2761                         goto redo;
2762                 }
2763                 stat(s, FREE_FASTPATH);
2764         } else
2765                 __slab_free(s, page, head, tail_obj, cnt, addr);
2766
2767 }
2768
2769 void kmem_cache_free(struct kmem_cache *s, void *x)
2770 {
2771         s = cache_from_obj(s, x);
2772         if (!s)
2773                 return;
2774         slab_free(s, virt_to_head_page(x), x, NULL, 1, _RET_IP_);
2775         trace_kmem_cache_free(_RET_IP_, x);
2776 }
2777 EXPORT_SYMBOL(kmem_cache_free);
2778
2779 struct detached_freelist {
2780         struct page *page;
2781         void *tail;
2782         void *freelist;
2783         int cnt;
2784         struct kmem_cache *s;
2785 };
2786
2787 /*
2788  * This function progressively scans the array with free objects (with
2789  * a limited look ahead) and extract objects belonging to the same
2790  * page.  It builds a detached freelist directly within the given
2791  * page/objects.  This can happen without any need for
2792  * synchronization, because the objects are owned by running process.
2793  * The freelist is build up as a single linked list in the objects.
2794  * The idea is, that this detached freelist can then be bulk
2795  * transferred to the real freelist(s), but only requiring a single
2796  * synchronization primitive.  Look ahead in the array is limited due
2797  * to performance reasons.
2798  */
2799 static inline
2800 int build_detached_freelist(struct kmem_cache *s, size_t size,
2801                             void **p, struct detached_freelist *df)
2802 {
2803         size_t first_skipped_index = 0;
2804         int lookahead = 3;
2805         void *object;
2806         struct page *page;
2807
2808         /* Always re-init detached_freelist */
2809         df->page = NULL;
2810
2811         do {
2812                 object = p[--size];
2813                 /* Do we need !ZERO_OR_NULL_PTR(object) here? (for kfree) */
2814         } while (!object && size);
2815
2816         if (!object)
2817                 return 0;
2818
2819         page = virt_to_head_page(object);
2820         if (!s) {
2821                 /* Handle kalloc'ed objects */
2822                 if (unlikely(!PageSlab(page))) {
2823                         BUG_ON(!PageCompound(page));
2824                         kfree_hook(object);
2825                         __free_kmem_pages(page, compound_order(page));
2826                         p[size] = NULL; /* mark object processed */
2827                         return size;
2828                 }
2829                 /* Derive kmem_cache from object */
2830                 df->s = page->slab_cache;
2831         } else {
2832                 df->s = cache_from_obj(s, object); /* Support for memcg */
2833         }
2834
2835         /* Start new detached freelist */
2836         df->page = page;
2837         set_freepointer(df->s, object, NULL);
2838         df->tail = object;
2839         df->freelist = object;
2840         p[size] = NULL; /* mark object processed */
2841         df->cnt = 1;
2842
2843         while (size) {
2844                 object = p[--size];
2845                 if (!object)
2846                         continue; /* Skip processed objects */
2847
2848                 /* df->page is always set at this point */
2849                 if (df->page == virt_to_head_page(object)) {
2850                         /* Opportunity build freelist */
2851                         set_freepointer(df->s, object, df->freelist);
2852                         df->freelist = object;
2853                         df->cnt++;
2854                         p[size] = NULL; /* mark object processed */
2855
2856                         continue;
2857                 }
2858
2859                 /* Limit look ahead search */
2860                 if (!--lookahead)
2861                         break;
2862
2863                 if (!first_skipped_index)
2864                         first_skipped_index = size + 1;
2865         }
2866
2867         return first_skipped_index;
2868 }
2869
2870 /* Note that interrupts must be enabled when calling this function. */
2871 void kmem_cache_free_bulk(struct kmem_cache *s, size_t size, void **p)
2872 {
2873         if (WARN_ON(!size))
2874                 return;
2875
2876         do {
2877                 struct detached_freelist df;
2878
2879                 size = build_detached_freelist(s, size, p, &df);
2880                 if (unlikely(!df.page))
2881                         continue;
2882
2883                 slab_free(df.s, df.page, df.freelist, df.tail, df.cnt,_RET_IP_);
2884         } while (likely(size));
2885 }
2886 EXPORT_SYMBOL(kmem_cache_free_bulk);
2887
2888 /* Note that interrupts must be enabled when calling this function. */
2889 int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size,
2890                           void **p)
2891 {
2892         struct kmem_cache_cpu *c;
2893         int i;
2894
2895         /* memcg and kmem_cache debug support */
2896         s = slab_pre_alloc_hook(s, flags);
2897         if (unlikely(!s))
2898                 return false;
2899         /*
2900          * Drain objects in the per cpu slab, while disabling local
2901          * IRQs, which protects against PREEMPT and interrupts
2902          * handlers invoking normal fastpath.
2903          */
2904         local_irq_disable();
2905         c = this_cpu_ptr(s->cpu_slab);
2906
2907         for (i = 0; i < size; i++) {
2908                 void *object = c->freelist;
2909
2910                 if (unlikely(!object)) {
2911                         /*
2912                          * Invoking slow path likely have side-effect
2913                          * of re-populating per CPU c->freelist
2914                          */
2915                         p[i] = ___slab_alloc(s, flags, NUMA_NO_NODE,
2916                                             _RET_IP_, c);
2917                         if (unlikely(!p[i]))
2918                                 goto error;
2919
2920                         c = this_cpu_ptr(s->cpu_slab);
2921                         continue; /* goto for-loop */
2922                 }
2923                 c->freelist = get_freepointer(s, object);
2924                 p[i] = object;
2925         }
2926         c->tid = next_tid(c->tid);
2927         local_irq_enable();
2928
2929         /* Clear memory outside IRQ disabled fastpath loop */
2930         if (unlikely(flags & __GFP_ZERO)) {
2931                 int j;
2932
2933                 for (j = 0; j < i; j++)
2934                         memset(p[j], 0, s->object_size);
2935         }
2936
2937         /* memcg and kmem_cache debug support */
2938         slab_post_alloc_hook(s, flags, size, p);
2939         return i;
2940 error:
2941         local_irq_enable();
2942         slab_post_alloc_hook(s, flags, i, p);
2943         __kmem_cache_free_bulk(s, i, p);
2944         return 0;
2945 }
2946 EXPORT_SYMBOL(kmem_cache_alloc_bulk);
2947
2948
2949 /*
2950  * Object placement in a slab is made very easy because we always start at
2951  * offset 0. If we tune the size of the object to the alignment then we can
2952  * get the required alignment by putting one properly sized object after
2953  * another.
2954  *
2955  * Notice that the allocation order determines the sizes of the per cpu
2956  * caches. Each processor has always one slab available for allocations.
2957  * Increasing the allocation order reduces the number of times that slabs
2958  * must be moved on and off the partial lists and is therefore a factor in
2959  * locking overhead.
2960  */
2961
2962 /*
2963  * Mininum / Maximum order of slab pages. This influences locking overhead
2964  * and slab fragmentation. A higher order reduces the number of partial slabs
2965  * and increases the number of allocations possible without having to
2966  * take the list_lock.
2967  */
2968 static int slub_min_order;
2969 static int slub_max_order = PAGE_ALLOC_COSTLY_ORDER;
2970 static int slub_min_objects;
2971
2972 /*
2973  * Calculate the order of allocation given an slab object size.
2974  *
2975  * The order of allocation has significant impact on performance and other
2976  * system components. Generally order 0 allocations should be preferred since
2977  * order 0 does not cause fragmentation in the page allocator. Larger objects
2978  * be problematic to put into order 0 slabs because there may be too much
2979  * unused space left. We go to a higher order if more than 1/16th of the slab
2980  * would be wasted.
2981  *
2982  * In order to reach satisfactory performance we must ensure that a minimum
2983  * number of objects is in one slab. Otherwise we may generate too much
2984  * activity on the partial lists which requires taking the list_lock. This is
2985  * less a concern for large slabs though which are rarely used.
2986  *
2987  * slub_max_order specifies the order where we begin to stop considering the
2988  * number of objects in a slab as critical. If we reach slub_max_order then
2989  * we try to keep the page order as low as possible. So we accept more waste
2990  * of space in favor of a small page order.
2991  *
2992  * Higher order allocations also allow the placement of more objects in a
2993  * slab and thereby reduce object handling overhead. If the user has
2994  * requested a higher mininum order then we start with that one instead of
2995  * the smallest order which will fit the object.
2996  */
2997 static inline int slab_order(int size, int min_objects,
2998                                 int max_order, int fract_leftover, int reserved)
2999 {
3000         int order;
3001         int rem;
3002         int min_order = slub_min_order;
3003
3004         if (order_objects(min_order, size, reserved) > MAX_OBJS_PER_PAGE)
3005                 return get_order(size * MAX_OBJS_PER_PAGE) - 1;
3006
3007         for (order = max(min_order, get_order(min_objects * size + reserved));
3008                         order <= max_order; order++) {
3009
3010                 unsigned long slab_size = PAGE_SIZE << order;
3011
3012                 rem = (slab_size - reserved) % size;
3013
3014                 if (rem <= slab_size / fract_leftover)
3015                         break;
3016         }
3017
3018         return order;
3019 }
3020
3021 static inline int calculate_order(int size, int reserved)
3022 {
3023         int order;
3024         int min_objects;
3025         int fraction;
3026         int max_objects;
3027
3028         /*
3029          * Attempt to find best configuration for a slab. This
3030          * works by first attempting to generate a layout with
3031          * the best configuration and backing off gradually.
3032          *
3033          * First we increase the acceptable waste in a slab. Then
3034          * we reduce the minimum objects required in a slab.
3035          */
3036         min_objects = slub_min_objects;
3037         if (!min_objects)
3038                 min_objects = 4 * (fls(nr_cpu_ids) + 1);
3039         max_objects = order_objects(slub_max_order, size, reserved);
3040         min_objects = min(min_objects, max_objects);
3041
3042         while (min_objects > 1) {
3043                 fraction = 16;
3044                 while (fraction >= 4) {
3045                         order = slab_order(size, min_objects,
3046                                         slub_max_order, fraction, reserved);
3047                         if (order <= slub_max_order)
3048                                 return order;
3049                         fraction /= 2;
3050                 }
3051                 min_objects--;
3052         }
3053
3054         /*
3055          * We were unable to place multiple objects in a slab. Now
3056          * lets see if we can place a single object there.
3057          */
3058         order = slab_order(size, 1, slub_max_order, 1, reserved);
3059         if (order <= slub_max_order)
3060                 return order;
3061
3062         /*
3063          * Doh this slab cannot be placed using slub_max_order.
3064          */
3065         order = slab_order(size, 1, MAX_ORDER, 1, reserved);
3066         if (order < MAX_ORDER)
3067                 return order;
3068         return -ENOSYS;
3069 }
3070
3071 static void
3072 init_kmem_cache_node(struct kmem_cache_node *n)
3073 {
3074         n->nr_partial = 0;
3075         spin_lock_init(&n->list_lock);
3076         INIT_LIST_HEAD(&n->partial);
3077 #ifdef CONFIG_SLUB_DEBUG
3078         atomic_long_set(&n->nr_slabs, 0);
3079         atomic_long_set(&n->total_objects, 0);
3080         INIT_LIST_HEAD(&n->full);
3081 #endif
3082 }
3083
3084 static inline int alloc_kmem_cache_cpus(struct kmem_cache *s)
3085 {
3086         BUILD_BUG_ON(PERCPU_DYNAMIC_EARLY_SIZE <
3087                         KMALLOC_SHIFT_HIGH * sizeof(struct kmem_cache_cpu));
3088
3089         /*
3090          * Must align to double word boundary for the double cmpxchg
3091          * instructions to work; see __pcpu_double_call_return_bool().
3092          */
3093         s->cpu_slab = __alloc_percpu(sizeof(struct kmem_cache_cpu),
3094                                      2 * sizeof(void *));
3095
3096         if (!s->cpu_slab)
3097                 return 0;
3098
3099         init_kmem_cache_cpus(s);
3100
3101         return 1;
3102 }
3103
3104 static struct kmem_cache *kmem_cache_node;
3105
3106 /*
3107  * No kmalloc_node yet so do it by hand. We know that this is the first
3108  * slab on the node for this slabcache. There are no concurrent accesses
3109  * possible.
3110  *
3111  * Note that this function only works on the kmem_cache_node
3112  * when allocating for the kmem_cache_node. This is used for bootstrapping
3113  * memory on a fresh node that has no slab structures yet.
3114  */
3115 static void early_kmem_cache_node_alloc(int node)
3116 {
3117         struct page *page;
3118         struct kmem_cache_node *n;
3119
3120         BUG_ON(kmem_cache_node->size < sizeof(struct kmem_cache_node));
3121
3122         page = new_slab(kmem_cache_node, GFP_NOWAIT, node);
3123
3124         BUG_ON(!page);
3125         if (page_to_nid(page) != node) {
3126                 pr_err("SLUB: Unable to allocate memory from node %d\n", node);
3127                 pr_err("SLUB: Allocating a useless per node structure in order to be able to continue\n");
3128         }
3129
3130         n = page->freelist;
3131         BUG_ON(!n);
3132         page->freelist = get_freepointer(kmem_cache_node, n);
3133         page->inuse = 1;
3134         page->frozen = 0;
3135         kmem_cache_node->node[node] = n;
3136 #ifdef CONFIG_SLUB_DEBUG
3137         init_object(kmem_cache_node, n, SLUB_RED_ACTIVE);
3138         init_tracking(kmem_cache_node, n);
3139 #endif
3140         kasan_kmalloc(kmem_cache_node, n, sizeof(struct kmem_cache_node));
3141         init_kmem_cache_node(n);
3142         inc_slabs_node(kmem_cache_node, node, page->objects);
3143
3144         /*
3145          * No locks need to be taken here as it has just been
3146          * initialized and there is no concurrent access.
3147          */
3148         __add_partial(n, page, DEACTIVATE_TO_HEAD);
3149 }
3150
3151 static void free_kmem_cache_nodes(struct kmem_cache *s)
3152 {
3153         int node;
3154         struct kmem_cache_node *n;
3155
3156         for_each_kmem_cache_node(s, node, n) {
3157                 kmem_cache_free(kmem_cache_node, n);
3158                 s->node[node] = NULL;
3159         }
3160 }
3161
3162 void __kmem_cache_release(struct kmem_cache *s)
3163 {
3164         free_percpu(s->cpu_slab);
3165         free_kmem_cache_nodes(s);
3166 }
3167
3168 static int init_kmem_cache_nodes(struct kmem_cache *s)
3169 {
3170         int node;
3171
3172         for_each_node_state(node, N_NORMAL_MEMORY) {
3173                 struct kmem_cache_node *n;
3174
3175                 if (slab_state == DOWN) {
3176                         early_kmem_cache_node_alloc(node);
3177                         continue;
3178                 }
3179                 n = kmem_cache_alloc_node(kmem_cache_node,
3180                                                 GFP_KERNEL, node);
3181
3182                 if (!n) {
3183                         free_kmem_cache_nodes(s);
3184                         return 0;
3185                 }
3186
3187                 s->node[node] = n;
3188                 init_kmem_cache_node(n);
3189         }
3190         return 1;
3191 }
3192
3193 static void set_min_partial(struct kmem_cache *s, unsigned long min)
3194 {
3195         if (min < MIN_PARTIAL)
3196                 min = MIN_PARTIAL;
3197         else if (min > MAX_PARTIAL)
3198                 min = MAX_PARTIAL;
3199         s->min_partial = min;
3200 }
3201
3202 /*
3203  * calculate_sizes() determines the order and the distribution of data within
3204  * a slab object.
3205  */
3206 static int calculate_sizes(struct kmem_cache *s, int forced_order)
3207 {
3208         unsigned long flags = s->flags;
3209         unsigned long size = s->object_size;
3210         int order;
3211
3212         /*
3213          * Round up object size to the next word boundary. We can only
3214          * place the free pointer at word boundaries and this determines
3215          * the possible location of the free pointer.
3216          */
3217         size = ALIGN(size, sizeof(void *));
3218
3219 #ifdef CONFIG_SLUB_DEBUG
3220         /*
3221          * Determine if we can poison the object itself. If the user of
3222          * the slab may touch the object after free or before allocation
3223          * then we should never poison the object itself.
3224          */
3225         if ((flags & SLAB_POISON) && !(flags & SLAB_DESTROY_BY_RCU) &&
3226                         !s->ctor)
3227                 s->flags |= __OBJECT_POISON;
3228         else
3229                 s->flags &= ~__OBJECT_POISON;
3230
3231
3232         /*
3233          * If we are Redzoning then check if there is some space between the
3234          * end of the object and the free pointer. If not then add an
3235          * additional word to have some bytes to store Redzone information.
3236          */
3237         if ((flags & SLAB_RED_ZONE) && size == s->object_size)
3238                 size += sizeof(void *);
3239 #endif
3240
3241         /*
3242          * With that we have determined the number of bytes in actual use
3243          * by the object. This is the potential offset to the free pointer.
3244          */
3245         s->inuse = size;
3246
3247         if (((flags & (SLAB_DESTROY_BY_RCU | SLAB_POISON)) ||
3248                 s->ctor)) {
3249                 /*
3250                  * Relocate free pointer after the object if it is not
3251                  * permitted to overwrite the first word of the object on
3252                  * kmem_cache_free.
3253                  *
3254                  * This is the case if we do RCU, have a constructor or
3255                  * destructor or are poisoning the objects.
3256                  */
3257                 s->offset = size;
3258                 size += sizeof(void *);
3259         }
3260
3261 #ifdef CONFIG_SLUB_DEBUG
3262         if (flags & SLAB_STORE_USER)
3263                 /*
3264                  * Need to store information about allocs and frees after
3265                  * the object.
3266                  */
3267                 size += 2 * sizeof(struct track);
3268
3269         if (flags & SLAB_RED_ZONE)
3270                 /*
3271                  * Add some empty padding so that we can catch
3272                  * overwrites from earlier objects rather than let
3273                  * tracking information or the free pointer be
3274                  * corrupted if a user writes before the start
3275                  * of the object.
3276                  */
3277                 size += sizeof(void *);
3278 #endif
3279
3280         /*
3281          * SLUB stores one object immediately after another beginning from
3282          * offset 0. In order to align the objects we have to simply size
3283          * each object to conform to the alignment.
3284          */
3285         size = ALIGN(size, s->align);
3286         s->size = size;
3287         if (forced_order >= 0)
3288                 order = forced_order;
3289         else
3290                 order = calculate_order(size, s->reserved);
3291
3292         if (order < 0)
3293                 return 0;
3294
3295         s->allocflags = 0;
3296         if (order)
3297                 s->allocflags |= __GFP_COMP;
3298
3299         if (s->flags & SLAB_CACHE_DMA)
3300                 s->allocflags |= GFP_DMA;
3301
3302         if (s->flags & SLAB_RECLAIM_ACCOUNT)
3303                 s->allocflags |= __GFP_RECLAIMABLE;
3304
3305         /*
3306          * Determine the number of objects per slab
3307          */
3308         s->oo = oo_make(order, size, s->reserved);
3309         s->min = oo_make(get_order(size), size, s->reserved);
3310         if (oo_objects(s->oo) > oo_objects(s->max))
3311                 s->max = s->oo;
3312
3313         return !!oo_objects(s->oo);
3314 }
3315
3316 static int kmem_cache_open(struct kmem_cache *s, unsigned long flags)
3317 {
3318         s->flags = kmem_cache_flags(s->size, flags, s->name, s->ctor);
3319         s->reserved = 0;
3320
3321         if (need_reserve_slab_rcu && (s->flags & SLAB_DESTROY_BY_RCU))
3322                 s->reserved = sizeof(struct rcu_head);
3323
3324         if (!calculate_sizes(s, -1))
3325                 goto error;
3326         if (disable_higher_order_debug) {
3327                 /*
3328                  * Disable debugging flags that store metadata if the min slab
3329                  * order increased.
3330                  */
3331                 if (get_order(s->size) > get_order(s->object_size)) {
3332                         s->flags &= ~DEBUG_METADATA_FLAGS;
3333                         s->offset = 0;
3334                         if (!calculate_sizes(s, -1))
3335                                 goto error;
3336                 }
3337         }
3338
3339 #if defined(CONFIG_HAVE_CMPXCHG_DOUBLE) && \
3340     defined(CONFIG_HAVE_ALIGNED_STRUCT_PAGE)
3341         if (system_has_cmpxchg_double() && (s->flags & SLAB_DEBUG_FLAGS) == 0)
3342                 /* Enable fast mode */
3343                 s->flags |= __CMPXCHG_DOUBLE;
3344 #endif
3345
3346         /*
3347          * The larger the object size is, the more pages we want on the partial
3348          * list to avoid pounding the page allocator excessively.
3349          */
3350         set_min_partial(s, ilog2(s->size) / 2);
3351
3352         /*
3353          * cpu_partial determined the maximum number of objects kept in the
3354          * per cpu partial lists of a processor.
3355          *
3356          * Per cpu partial lists mainly contain slabs that just have one
3357          * object freed. If they are used for allocation then they can be
3358          * filled up again with minimal effort. The slab will never hit the
3359          * per node partial lists and therefore no locking will be required.
3360          *
3361          * This setting also determines
3362          *
3363          * A) The number of objects from per cpu partial slabs dumped to the
3364          *    per node list when we reach the limit.
3365          * B) The number of objects in cpu partial slabs to extract from the
3366          *    per node list when we run out of per cpu objects. We only fetch
3367          *    50% to keep some capacity around for frees.
3368          */
3369         if (!kmem_cache_has_cpu_partial(s))
3370                 s->cpu_partial = 0;
3371         else if (s->size >= PAGE_SIZE)
3372                 s->cpu_partial = 2;
3373         else if (s->size >= 1024)
3374                 s->cpu_partial = 6;
3375         else if (s->size >= 256)
3376                 s->cpu_partial = 13;
3377         else
3378                 s->cpu_partial = 30;
3379
3380 #ifdef CONFIG_NUMA
3381         s->remote_node_defrag_ratio = 1000;
3382 #endif
3383         if (!init_kmem_cache_nodes(s))
3384                 goto error;
3385
3386         if (alloc_kmem_cache_cpus(s))
3387                 return 0;
3388
3389         free_kmem_cache_nodes(s);
3390 error:
3391         if (flags & SLAB_PANIC)
3392                 panic("Cannot create slab %s size=%lu realsize=%u "
3393                         "order=%u offset=%u flags=%lx\n",
3394                         s->name, (unsigned long)s->size, s->size,
3395                         oo_order(s->oo), s->offset, flags);
3396         return -EINVAL;
3397 }
3398
3399 static void list_slab_objects(struct kmem_cache *s, struct page *page,
3400                                                         const char *text)
3401 {
3402 #ifdef CONFIG_SLUB_DEBUG
3403         void *addr = page_address(page);
3404         void *p;
3405         unsigned long *map = kzalloc(BITS_TO_LONGS(page->objects) *
3406                                      sizeof(long), GFP_ATOMIC);
3407         if (!map)
3408                 return;
3409         slab_err(s, page, text, s->name);
3410         slab_lock(page);
3411
3412         get_map(s, page, map);
3413         for_each_object(p, s, addr, page->objects) {
3414
3415                 if (!test_bit(slab_index(p, s, addr), map)) {
3416                         pr_err("INFO: Object 0x%p @offset=%tu\n", p, p - addr);
3417                         print_tracking(s, p);
3418                 }
3419         }
3420         slab_unlock(page);
3421         kfree(map);
3422 #endif
3423 }
3424
3425 /*
3426  * Attempt to free all partial slabs on a node.
3427  * This is called from __kmem_cache_shutdown(). We must take list_lock
3428  * because sysfs file might still access partial list after the shutdowning.
3429  */
3430 static void free_partial(struct kmem_cache *s, struct kmem_cache_node *n)
3431 {
3432         struct page *page, *h;
3433
3434         BUG_ON(irqs_disabled());
3435         spin_lock_irq(&n->list_lock);
3436         list_for_each_entry_safe(page, h, &n->partial, lru) {
3437                 if (!page->inuse) {
3438                         remove_partial(n, page);
3439                         discard_slab(s, page);
3440                 } else {
3441                         list_slab_objects(s, page,
3442                         "Objects remaining in %s on __kmem_cache_shutdown()");
3443                 }
3444         }
3445         spin_unlock_irq(&n->list_lock);
3446 }
3447
3448 /*
3449  * Release all resources used by a slab cache.
3450  */
3451 int __kmem_cache_shutdown(struct kmem_cache *s)
3452 {
3453         int node;
3454         struct kmem_cache_node *n;
3455
3456         flush_all(s);
3457         /* Attempt to free all objects */
3458         for_each_kmem_cache_node(s, node, n) {
3459                 free_partial(s, n);
3460                 if (n->nr_partial || slabs_node(s, node))
3461                         return 1;
3462         }
3463         return 0;
3464 }
3465
3466 /********************************************************************
3467  *              Kmalloc subsystem
3468  *******************************************************************/
3469
3470 static int __init setup_slub_min_order(char *str)
3471 {
3472         get_option(&str, &slub_min_order);
3473
3474         return 1;
3475 }
3476
3477 __setup("slub_min_order=", setup_slub_min_order);
3478
3479 static int __init setup_slub_max_order(char *str)
3480 {
3481         get_option(&str, &slub_max_order);
3482         slub_max_order = min(slub_max_order, MAX_ORDER - 1);
3483
3484         return 1;
3485 }
3486
3487 __setup("slub_max_order=", setup_slub_max_order);
3488
3489 static int __init setup_slub_min_objects(char *str)
3490 {
3491         get_option(&str, &slub_min_objects);
3492
3493         return 1;
3494 }
3495
3496 __setup("slub_min_objects=", setup_slub_min_objects);
3497
3498 void *__kmalloc(size_t size, gfp_t flags)
3499 {
3500         struct kmem_cache *s;
3501         void *ret;
3502
3503         if (unlikely(size > KMALLOC_MAX_CACHE_SIZE))
3504                 return kmalloc_large(size, flags);
3505
3506         s = kmalloc_slab(size, flags);
3507
3508         if (unlikely(ZERO_OR_NULL_PTR(s)))
3509                 return s;
3510
3511         ret = slab_alloc(s, flags, _RET_IP_);
3512
3513         trace_kmalloc(_RET_IP_, ret, size, s->size, flags);
3514
3515         kasan_kmalloc(s, ret, size);
3516
3517         return ret;
3518 }
3519 EXPORT_SYMBOL(__kmalloc);
3520
3521 #ifdef CONFIG_NUMA
3522 static void *kmalloc_large_node(size_t size, gfp_t flags, int node)
3523 {
3524         struct page *page;
3525         void *ptr = NULL;
3526
3527         flags |= __GFP_COMP | __GFP_NOTRACK;
3528         page = alloc_kmem_pages_node(node, flags, get_order(size));
3529         if (page)
3530                 ptr = page_address(page);
3531
3532         kmalloc_large_node_hook(ptr, size, flags);
3533         return ptr;
3534 }
3535
3536 void *__kmalloc_node(size_t size, gfp_t flags, int node)
3537 {
3538         struct kmem_cache *s;
3539         void *ret;
3540
3541         if (unlikely(size > KMALLOC_MAX_CACHE_SIZE)) {
3542                 ret = kmalloc_large_node(size, flags, node);
3543
3544                 trace_kmalloc_node(_RET_IP_, ret,
3545                                    size, PAGE_SIZE << get_order(size),
3546                                    flags, node);
3547
3548                 return ret;
3549         }
3550
3551         s = kmalloc_slab(size, flags);
3552
3553         if (unlikely(ZERO_OR_NULL_PTR(s)))
3554                 return s;
3555
3556         ret = slab_alloc_node(s, flags, node, _RET_IP_);
3557
3558         trace_kmalloc_node(_RET_IP_, ret, size, s->size, flags, node);
3559
3560         kasan_kmalloc(s, ret, size);
3561
3562         return ret;
3563 }
3564 EXPORT_SYMBOL(__kmalloc_node);
3565 #endif
3566
3567 static size_t __ksize(const void *object)
3568 {
3569         struct page *page;
3570
3571         if (unlikely(object == ZERO_SIZE_PTR))
3572                 return 0;
3573
3574         page = virt_to_head_page(object);
3575
3576         if (unlikely(!PageSlab(page))) {
3577                 WARN_ON(!PageCompound(page));
3578                 return PAGE_SIZE << compound_order(page);
3579         }
3580
3581         return slab_ksize(page->slab_cache);
3582 }
3583
3584 size_t ksize(const void *object)
3585 {
3586         size_t size = __ksize(object);
3587         /* We assume that ksize callers could use whole allocated area,
3588            so we need unpoison this area. */
3589         kasan_krealloc(object, size);
3590         return size;
3591 }
3592 EXPORT_SYMBOL(ksize);
3593
3594 void kfree(const void *x)
3595 {
3596         struct page *page;
3597         void *object = (void *)x;
3598
3599         trace_kfree(_RET_IP_, x);
3600
3601         if (unlikely(ZERO_OR_NULL_PTR(x)))
3602                 return;
3603
3604         page = virt_to_head_page(x);
3605         if (unlikely(!PageSlab(page))) {
3606                 BUG_ON(!PageCompound(page));
3607                 kfree_hook(x);
3608                 __free_kmem_pages(page, compound_order(page));
3609                 return;
3610         }
3611         slab_free(page->slab_cache, page, object, NULL, 1, _RET_IP_);
3612 }
3613 EXPORT_SYMBOL(kfree);
3614
3615 #define SHRINK_PROMOTE_MAX 32
3616
3617 /*
3618  * kmem_cache_shrink discards empty slabs and promotes the slabs filled
3619  * up most to the head of the partial lists. New allocations will then
3620  * fill those up and thus they can be removed from the partial lists.
3621  *
3622  * The slabs with the least items are placed last. This results in them
3623  * being allocated from last increasing the chance that the last objects
3624  * are freed in them.
3625  */
3626 int __kmem_cache_shrink(struct kmem_cache *s, bool deactivate)
3627 {
3628         int node;
3629         int i;
3630         struct kmem_cache_node *n;
3631         struct page *page;
3632         struct page *t;
3633         struct list_head discard;
3634         struct list_head promote[SHRINK_PROMOTE_MAX];
3635         unsigned long flags;
3636         int ret = 0;
3637
3638         if (deactivate) {
3639                 /*
3640                  * Disable empty slabs caching. Used to avoid pinning offline
3641                  * memory cgroups by kmem pages that can be freed.
3642                  */
3643                 s->cpu_partial = 0;
3644                 s->min_partial = 0;
3645
3646                 /*
3647                  * s->cpu_partial is checked locklessly (see put_cpu_partial),
3648                  * so we have to make sure the change is visible.
3649                  */
3650                 kick_all_cpus_sync();
3651         }
3652
3653         flush_all(s);
3654         for_each_kmem_cache_node(s, node, n) {
3655                 INIT_LIST_HEAD(&discard);
3656                 for (i = 0; i < SHRINK_PROMOTE_MAX; i++)
3657                         INIT_LIST_HEAD(promote + i);
3658
3659                 spin_lock_irqsave(&n->list_lock, flags);
3660
3661                 /*
3662                  * Build lists of slabs to discard or promote.
3663                  *
3664                  * Note that concurrent frees may occur while we hold the
3665                  * list_lock. page->inuse here is the upper limit.
3666                  */
3667                 list_for_each_entry_safe(page, t, &n->partial, lru) {
3668                         int free = page->objects - page->inuse;
3669
3670                         /* Do not reread page->inuse */
3671                         barrier();
3672
3673                         /* We do not keep full slabs on the list */
3674                         BUG_ON(free <= 0);
3675
3676                         if (free == page->objects) {
3677                                 list_move(&page->lru, &discard);
3678                                 n->nr_partial--;
3679                         } else if (free <= SHRINK_PROMOTE_MAX)
3680                                 list_move(&page->lru, promote + free - 1);
3681                 }
3682
3683                 /*
3684                  * Promote the slabs filled up most to the head of the
3685                  * partial list.
3686                  */
3687                 for (i = SHRINK_PROMOTE_MAX - 1; i >= 0; i--)
3688                         list_splice(promote + i, &n->partial);
3689
3690                 spin_unlock_irqrestore(&n->list_lock, flags);
3691
3692                 /* Release empty slabs */
3693                 list_for_each_entry_safe(page, t, &discard, lru)
3694                         discard_slab(s, page);
3695
3696                 if (slabs_node(s, node))
3697                         ret = 1;
3698         }
3699
3700         return ret;
3701 }
3702
3703 static int slab_mem_going_offline_callback(void *arg)
3704 {
3705         struct kmem_cache *s;
3706
3707         mutex_lock(&slab_mutex);
3708         list_for_each_entry(s, &slab_caches, list)
3709                 __kmem_cache_shrink(s, false);
3710         mutex_unlock(&slab_mutex);
3711
3712         return 0;
3713 }
3714
3715 static void slab_mem_offline_callback(void *arg)
3716 {
3717         struct kmem_cache_node *n;
3718         struct kmem_cache *s;
3719         struct memory_notify *marg = arg;
3720         int offline_node;
3721
3722         offline_node = marg->status_change_nid_normal;
3723
3724         /*
3725          * If the node still has available memory. we need kmem_cache_node
3726          * for it yet.
3727          */
3728         if (offline_node < 0)
3729                 return;
3730
3731         mutex_lock(&slab_mutex);
3732         list_for_each_entry(s, &slab_caches, list) {
3733                 n = get_node(s, offline_node);
3734                 if (n) {
3735                         /*
3736                          * if n->nr_slabs > 0, slabs still exist on the node
3737                          * that is going down. We were unable to free them,
3738                          * and offline_pages() function shouldn't call this
3739                          * callback. So, we must fail.
3740                          */
3741                         BUG_ON(slabs_node(s, offline_node));
3742
3743                         s->node[offline_node] = NULL;
3744                         kmem_cache_free(kmem_cache_node, n);
3745                 }
3746         }
3747         mutex_unlock(&slab_mutex);
3748 }
3749
3750 static int slab_mem_going_online_callback(void *arg)
3751 {
3752         struct kmem_cache_node *n;
3753         struct kmem_cache *s;
3754         struct memory_notify *marg = arg;
3755         int nid = marg->status_change_nid_normal;
3756         int ret = 0;
3757
3758         /*
3759          * If the node's memory is already available, then kmem_cache_node is
3760          * already created. Nothing to do.
3761          */
3762         if (nid < 0)
3763                 return 0;
3764
3765         /*
3766          * We are bringing a node online. No memory is available yet. We must
3767          * allocate a kmem_cache_node structure in order to bring the node
3768          * online.
3769          */
3770         mutex_lock(&slab_mutex);
3771         list_for_each_entry(s, &slab_caches, list) {
3772                 /*
3773                  * XXX: kmem_cache_alloc_node will fallback to other nodes
3774                  *      since memory is not yet available from the node that
3775                  *      is brought up.
3776                  */
3777                 n = kmem_cache_alloc(kmem_cache_node, GFP_KERNEL);
3778                 if (!n) {
3779                         ret = -ENOMEM;
3780                         goto out;
3781                 }
3782                 init_kmem_cache_node(n);
3783                 s->node[nid] = n;
3784         }
3785 out:
3786         mutex_unlock(&slab_mutex);
3787         return ret;
3788 }
3789
3790 static int slab_memory_callback(struct notifier_block *self,
3791                                 unsigned long action, void *arg)
3792 {
3793         int ret = 0;
3794
3795         switch (action) {
3796         case MEM_GOING_ONLINE:
3797                 ret = slab_mem_going_online_callback(arg);
3798                 break;
3799         case MEM_GOING_OFFLINE:
3800                 ret = slab_mem_going_offline_callback(arg);
3801                 break;
3802         case MEM_OFFLINE:
3803         case MEM_CANCEL_ONLINE:
3804                 slab_mem_offline_callback(arg);
3805                 break;
3806         case MEM_ONLINE:
3807         case MEM_CANCEL_OFFLINE:
3808                 break;
3809         }
3810         if (ret)
3811                 ret = notifier_from_errno(ret);
3812         else
3813                 ret = NOTIFY_OK;
3814         return ret;
3815 }
3816
3817 static struct notifier_block slab_memory_callback_nb = {
3818         .notifier_call = slab_memory_callback,
3819         .priority = SLAB_CALLBACK_PRI,
3820 };
3821
3822 /********************************************************************
3823  *                      Basic setup of slabs
3824  *******************************************************************/
3825
3826 /*
3827  * Used for early kmem_cache structures that were allocated using
3828  * the page allocator. Allocate them properly then fix up the pointers
3829  * that may be pointing to the wrong kmem_cache structure.
3830  */
3831
3832 static struct kmem_cache * __init bootstrap(struct kmem_cache *static_cache)
3833 {
3834         int node;
3835         struct kmem_cache *s = kmem_cache_zalloc(kmem_cache, GFP_NOWAIT);
3836         struct kmem_cache_node *n;
3837
3838         memcpy(s, static_cache, kmem_cache->object_size);
3839
3840         /*
3841          * This runs very early, and only the boot processor is supposed to be
3842          * up.  Even if it weren't true, IRQs are not up so we couldn't fire
3843          * IPIs around.
3844          */
3845         __flush_cpu_slab(s, smp_processor_id());
3846         for_each_kmem_cache_node(s, node, n) {
3847                 struct page *p;
3848
3849                 list_for_each_entry(p, &n->partial, lru)
3850                         p->slab_cache = s;
3851
3852 #ifdef CONFIG_SLUB_DEBUG
3853                 list_for_each_entry(p, &n->full, lru)
3854                         p->slab_cache = s;
3855 #endif
3856         }
3857         slab_init_memcg_params(s);
3858         list_add(&s->list, &slab_caches);
3859         return s;
3860 }
3861
3862 void __init kmem_cache_init(void)
3863 {
3864         static __initdata struct kmem_cache boot_kmem_cache,
3865                 boot_kmem_cache_node;
3866
3867         if (debug_guardpage_minorder())
3868                 slub_max_order = 0;
3869
3870         kmem_cache_node = &boot_kmem_cache_node;
3871         kmem_cache = &boot_kmem_cache;
3872
3873         create_boot_cache(kmem_cache_node, "kmem_cache_node",
3874                 sizeof(struct kmem_cache_node), SLAB_HWCACHE_ALIGN);
3875
3876         register_hotmemory_notifier(&slab_memory_callback_nb);
3877
3878         /* Able to allocate the per node structures */
3879         slab_state = PARTIAL;
3880
3881         create_boot_cache(kmem_cache, "kmem_cache",
3882                         offsetof(struct kmem_cache, node) +
3883                                 nr_node_ids * sizeof(struct kmem_cache_node *),
3884                        SLAB_HWCACHE_ALIGN);
3885
3886         kmem_cache = bootstrap(&boot_kmem_cache);
3887
3888         /*
3889          * Allocate kmem_cache_node properly from the kmem_cache slab.
3890          * kmem_cache_node is separately allocated so no need to
3891          * update any list pointers.
3892          */
3893         kmem_cache_node = bootstrap(&boot_kmem_cache_node);
3894
3895         /* Now we can use the kmem_cache to allocate kmalloc slabs */
3896         setup_kmalloc_cache_index_table();
3897         create_kmalloc_caches(0);
3898
3899 #ifdef CONFIG_SMP
3900         register_cpu_notifier(&slab_notifier);
3901 #endif
3902
3903         pr_info("SLUB: HWalign=%d, Order=%d-%d, MinObjects=%d, CPUs=%d, Nodes=%d\n",
3904                 cache_line_size(),
3905                 slub_min_order, slub_max_order, slub_min_objects,
3906                 nr_cpu_ids, nr_node_ids);
3907 }
3908
3909 void __init kmem_cache_init_late(void)
3910 {
3911 }
3912
3913 struct kmem_cache *
3914 __kmem_cache_alias(const char *name, size_t size, size_t align,
3915                    unsigned long flags, void (*ctor)(void *))
3916 {
3917         struct kmem_cache *s, *c;
3918
3919         s = find_mergeable(size, align, flags, name, ctor);
3920         if (s) {
3921                 s->refcount++;
3922
3923                 /*
3924                  * Adjust the object sizes so that we clear
3925                  * the complete object on kzalloc.
3926                  */
3927                 s->object_size = max(s->object_size, (int)size);
3928                 s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *)));
3929
3930                 for_each_memcg_cache(c, s) {
3931                         c->object_size = s->object_size;
3932                         c->inuse = max_t(int, c->inuse,
3933                                          ALIGN(size, sizeof(void *)));
3934                 }
3935
3936                 if (sysfs_slab_alias(s, name)) {
3937                         s->refcount--;
3938                         s = NULL;
3939                 }
3940         }
3941
3942         return s;
3943 }
3944
3945 int __kmem_cache_create(struct kmem_cache *s, unsigned long flags)
3946 {
3947         int err;
3948
3949         err = kmem_cache_open(s, flags);
3950         if (err)
3951                 return err;
3952
3953         /* Mutex is not taken during early boot */
3954         if (slab_state <= UP)
3955                 return 0;
3956
3957         memcg_propagate_slab_attrs(s);
3958         err = sysfs_slab_add(s);
3959         if (err)
3960                 __kmem_cache_release(s);
3961
3962         return err;
3963 }
3964
3965 #ifdef CONFIG_SMP
3966 /*
3967  * Use the cpu notifier to insure that the cpu slabs are flushed when
3968  * necessary.
3969  */
3970 static int slab_cpuup_callback(struct notifier_block *nfb,
3971                 unsigned long action, void *hcpu)
3972 {
3973         long cpu = (long)hcpu;
3974         struct kmem_cache *s;
3975         unsigned long flags;
3976
3977         switch (action) {
3978         case CPU_UP_CANCELED:
3979         case CPU_UP_CANCELED_FROZEN:
3980         case CPU_DEAD:
3981         case CPU_DEAD_FROZEN:
3982                 mutex_lock(&slab_mutex);
3983                 list_for_each_entry(s, &slab_caches, list) {
3984                         local_irq_save(flags);
3985                         __flush_cpu_slab(s, cpu);
3986                         local_irq_restore(flags);
3987                 }
3988                 mutex_unlock(&slab_mutex);
3989                 break;
3990         default:
3991                 break;
3992         }
3993         return NOTIFY_OK;
3994 }
3995
3996 static struct notifier_block slab_notifier = {
3997         .notifier_call = slab_cpuup_callback
3998 };
3999
4000 #endif
4001
4002 void *__kmalloc_track_caller(size_t size, gfp_t gfpflags, unsigned long caller)
4003 {
4004         struct kmem_cache *s;
4005         void *ret;
4006
4007         if (unlikely(size > KMALLOC_MAX_CACHE_SIZE))
4008                 return kmalloc_large(size, gfpflags);
4009
4010         s = kmalloc_slab(size, gfpflags);
4011
4012         if (unlikely(ZERO_OR_NULL_PTR(s)))
4013                 return s;
4014
4015         ret = slab_alloc(s, gfpflags, caller);
4016
4017         /* Honor the call site pointer we received. */
4018         trace_kmalloc(caller, ret, size, s->size, gfpflags);
4019
4020         return ret;
4021 }
4022
4023 #ifdef CONFIG_NUMA
4024 void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags,
4025                                         int node, unsigned long caller)
4026 {
4027         struct kmem_cache *s;
4028         void *ret;
4029
4030         if (unlikely(size > KMALLOC_MAX_CACHE_SIZE)) {
4031                 ret = kmalloc_large_node(size, gfpflags, node);
4032
4033                 trace_kmalloc_node(caller, ret,
4034                                    size, PAGE_SIZE << get_order(size),
4035                                    gfpflags, node);
4036
4037                 return ret;
4038         }
4039
4040         s = kmalloc_slab(size, gfpflags);
4041
4042         if (unlikely(ZERO_OR_NULL_PTR(s)))
4043                 return s;
4044
4045         ret = slab_alloc_node(s, gfpflags, node, caller);
4046
4047         /* Honor the call site pointer we received. */
4048         trace_kmalloc_node(caller, ret, size, s->size, gfpflags, node);
4049
4050         return ret;
4051 }
4052 #endif
4053
4054 #ifdef CONFIG_SYSFS
4055 static int count_inuse(struct page *page)
4056 {
4057         return page->inuse;
4058 }
4059
4060 static int count_total(struct page *page)
4061 {
4062         return page->objects;
4063 }
4064 #endif
4065
4066 #ifdef CONFIG_SLUB_DEBUG
4067 static int validate_slab(struct kmem_cache *s, struct page *page,
4068                                                 unsigned long *map)
4069 {
4070         void *p;
4071         void *addr = page_address(page);
4072
4073         if (!check_slab(s, page) ||
4074                         !on_freelist(s, page, NULL))
4075                 return 0;
4076
4077         /* Now we know that a valid freelist exists */
4078         bitmap_zero(map, page->objects);
4079
4080         get_map(s, page, map);
4081         for_each_object(p, s, addr, page->objects) {
4082                 if (test_bit(slab_index(p, s, addr), map))
4083                         if (!check_object(s, page, p, SLUB_RED_INACTIVE))
4084                                 return 0;
4085         }
4086
4087         for_each_object(p, s, addr, page->objects)
4088                 if (!test_bit(slab_index(p, s, addr), map))
4089                         if (!check_object(s, page, p, SLUB_RED_ACTIVE))
4090                                 return 0;
4091         return 1;
4092 }
4093
4094 static void validate_slab_slab(struct kmem_cache *s, struct page *page,
4095                                                 unsigned long *map)
4096 {
4097         slab_lock(page);
4098         validate_slab(s, page, map);
4099         slab_unlock(page);
4100 }
4101
4102 static int validate_slab_node(struct kmem_cache *s,
4103                 struct kmem_cache_node *n, unsigned long *map)
4104 {
4105         unsigned long count = 0;
4106         struct page *page;
4107         unsigned long flags;
4108
4109         spin_lock_irqsave(&n->list_lock, flags);
4110
4111         list_for_each_entry(page, &n->partial, lru) {
4112                 validate_slab_slab(s, page, map);
4113                 count++;
4114         }
4115         if (count != n->nr_partial)
4116                 pr_err("SLUB %s: %ld partial slabs counted but counter=%ld\n",
4117                        s->name, count, n->nr_partial);
4118
4119         if (!(s->flags & SLAB_STORE_USER))
4120                 goto out;
4121
4122         list_for_each_entry(page, &n->full, lru) {
4123                 validate_slab_slab(s, page, map);
4124                 count++;
4125         }
4126         if (count != atomic_long_read(&n->nr_slabs))
4127                 pr_err("SLUB: %s %ld slabs counted but counter=%ld\n",
4128                        s->name, count, atomic_long_read(&n->nr_slabs));
4129
4130 out:
4131         spin_unlock_irqrestore(&n->list_lock, flags);
4132         return count;
4133 }
4134
4135 static long validate_slab_cache(struct kmem_cache *s)
4136 {
4137         int node;
4138         unsigned long count = 0;
4139         unsigned long *map = kmalloc(BITS_TO_LONGS(oo_objects(s->max)) *
4140                                 sizeof(unsigned long), GFP_KERNEL);
4141         struct kmem_cache_node *n;
4142
4143         if (!map)
4144                 return -ENOMEM;
4145
4146         flush_all(s);
4147         for_each_kmem_cache_node(s, node, n)
4148                 count += validate_slab_node(s, n, map);
4149         kfree(map);
4150         return count;
4151 }
4152 /*
4153  * Generate lists of code addresses where slabcache objects are allocated
4154  * and freed.
4155  */
4156
4157 struct location {
4158         unsigned long count;
4159         unsigned long addr;
4160         long long sum_time;
4161         long min_time;
4162         long max_time;
4163         long min_pid;
4164         long max_pid;
4165         DECLARE_BITMAP(cpus, NR_CPUS);
4166         nodemask_t nodes;
4167 };
4168
4169 struct loc_track {
4170         unsigned long max;
4171         unsigned long count;
4172         struct location *loc;
4173 };
4174
4175 static void free_loc_track(struct loc_track *t)
4176 {
4177         if (t->max)
4178                 free_pages((unsigned long)t->loc,
4179                         get_order(sizeof(struct location) * t->max));
4180 }
4181
4182 static int alloc_loc_track(struct loc_track *t, unsigned long max, gfp_t flags)
4183 {
4184         struct location *l;
4185         int order;
4186
4187         order = get_order(sizeof(struct location) * max);
4188
4189         l = (void *)__get_free_pages(flags, order);
4190         if (!l)
4191                 return 0;
4192
4193         if (t->count) {
4194                 memcpy(l, t->loc, sizeof(struct location) * t->count);
4195                 free_loc_track(t);
4196         }
4197         t->max = max;
4198         t->loc = l;
4199         return 1;
4200 }
4201
4202 static int add_location(struct loc_track *t, struct kmem_cache *s,
4203                                 const struct track *track)
4204 {
4205         long start, end, pos;
4206         struct location *l;
4207         unsigned long caddr;
4208         unsigned long age = jiffies - track->when;
4209
4210         start = -1;
4211         end = t->count;
4212
4213         for ( ; ; ) {
4214                 pos = start + (end - start + 1) / 2;
4215
4216                 /*
4217                  * There is nothing at "end". If we end up there
4218                  * we need to add something to before end.
4219                  */
4220                 if (pos == end)
4221                         break;
4222
4223                 caddr = t->loc[pos].addr;
4224                 if (track->addr == caddr) {
4225
4226                         l = &t->loc[pos];
4227                         l->count++;
4228                         if (track->when) {
4229                                 l->sum_time += age;
4230                                 if (age < l->min_time)
4231                                         l->min_time = age;
4232                                 if (age > l->max_time)
4233                                         l->max_time = age;
4234
4235                                 if (track->pid < l->min_pid)
4236                                         l->min_pid = track->pid;
4237                                 if (track->pid > l->max_pid)
4238                                         l->max_pid = track->pid;
4239
4240                                 cpumask_set_cpu(track->cpu,
4241                                                 to_cpumask(l->cpus));
4242                         }
4243                         node_set(page_to_nid(virt_to_page(track)), l->nodes);
4244                         return 1;
4245                 }
4246
4247                 if (track->addr < caddr)
4248                         end = pos;
4249                 else
4250                         start = pos;
4251         }
4252
4253         /*
4254          * Not found. Insert new tracking element.
4255          */
4256         if (t->count >= t->max && !alloc_loc_track(t, 2 * t->max, GFP_ATOMIC))
4257                 return 0;
4258
4259         l = t->loc + pos;
4260         if (pos < t->count)
4261                 memmove(l + 1, l,
4262                         (t->count - pos) * sizeof(struct location));
4263         t->count++;
4264         l->count = 1;
4265         l->addr = track->addr;
4266         l->sum_time = age;
4267         l->min_time = age;
4268         l->max_time = age;
4269         l->min_pid = track->pid;
4270         l->max_pid = track->pid;
4271         cpumask_clear(to_cpumask(l->cpus));
4272         cpumask_set_cpu(track->cpu, to_cpumask(l->cpus));
4273         nodes_clear(l->nodes);
4274         node_set(page_to_nid(virt_to_page(track)), l->nodes);
4275         return 1;
4276 }
4277
4278 static void process_slab(struct loc_track *t, struct kmem_cache *s,
4279                 struct page *page, enum track_item alloc,
4280                 unsigned long *map)
4281 {
4282         void *addr = page_address(page);
4283         void *p;
4284
4285         bitmap_zero(map, page->objects);
4286         get_map(s, page, map);
4287
4288         for_each_object(p, s, addr, page->objects)
4289                 if (!test_bit(slab_index(p, s, addr), map))
4290                         add_location(t, s, get_track(s, p, alloc));
4291 }
4292
4293 static int list_locations(struct kmem_cache *s, char *buf,
4294                                         enum track_item alloc)
4295 {
4296         int len = 0;
4297         unsigned long i;
4298         struct loc_track t = { 0, 0, NULL };
4299         int node;
4300         unsigned long *map = kmalloc(BITS_TO_LONGS(oo_objects(s->max)) *
4301                                      sizeof(unsigned long), GFP_KERNEL);
4302         struct kmem_cache_node *n;
4303
4304         if (!map || !alloc_loc_track(&t, PAGE_SIZE / sizeof(struct location),
4305                                      GFP_TEMPORARY)) {
4306                 kfree(map);
4307                 return sprintf(buf, "Out of memory\n");
4308         }
4309         /* Push back cpu slabs */
4310         flush_all(s);
4311
4312         for_each_kmem_cache_node(s, node, n) {
4313                 unsigned long flags;
4314                 struct page *page;
4315
4316                 if (!atomic_long_read(&n->nr_slabs))
4317                         continue;
4318
4319                 spin_lock_irqsave(&n->list_lock, flags);
4320                 list_for_each_entry(page, &n->partial, lru)
4321                         process_slab(&t, s, page, alloc, map);
4322                 list_for_each_entry(page, &n->full, lru)
4323                         process_slab(&t, s, page, alloc, map);
4324                 spin_unlock_irqrestore(&n->list_lock, flags);
4325         }
4326
4327         for (i = 0; i < t.count; i++) {
4328                 struct location *l = &t.loc[i];
4329
4330                 if (len > PAGE_SIZE - KSYM_SYMBOL_LEN - 100)
4331                         break;
4332                 len += sprintf(buf + len, "%7ld ", l->count);
4333
4334                 if (l->addr)
4335                         len += sprintf(buf + len, "%pS", (void *)l->addr);
4336                 else
4337                         len += sprintf(buf + len, "<not-available>");
4338
4339                 if (l->sum_time != l->min_time) {
4340                         len += sprintf(buf + len, " age=%ld/%ld/%ld",
4341                                 l->min_time,
4342                                 (long)div_u64(l->sum_time, l->count),
4343                                 l->max_time);
4344                 } else
4345                         len += sprintf(buf + len, " age=%ld",
4346                                 l->min_time);
4347
4348                 if (l->min_pid != l->max_pid)
4349                         len += sprintf(buf + len, " pid=%ld-%ld",
4350                                 l->min_pid, l->max_pid);
4351                 else
4352                         len += sprintf(buf + len, " pid=%ld",
4353                                 l->min_pid);
4354
4355                 if (num_online_cpus() > 1 &&
4356                                 !cpumask_empty(to_cpumask(l->cpus)) &&
4357                                 len < PAGE_SIZE - 60)
4358                         len += scnprintf(buf + len, PAGE_SIZE - len - 50,
4359                                          " cpus=%*pbl",
4360                                          cpumask_pr_args(to_cpumask(l->cpus)));
4361
4362                 if (nr_online_nodes > 1 && !nodes_empty(l->nodes) &&
4363                                 len < PAGE_SIZE - 60)
4364                         len += scnprintf(buf + len, PAGE_SIZE - len - 50,
4365                                          " nodes=%*pbl",
4366                                          nodemask_pr_args(&l->nodes));
4367
4368                 len += sprintf(buf + len, "\n");
4369         }
4370
4371         free_loc_track(&t);
4372         kfree(map);
4373         if (!t.count)
4374                 len += sprintf(buf, "No data\n");
4375         return len;
4376 }
4377 #endif
4378
4379 #ifdef SLUB_RESILIENCY_TEST
4380 static void __init resiliency_test(void)
4381 {
4382         u8 *p;
4383
4384         BUILD_BUG_ON(KMALLOC_MIN_SIZE > 16 || KMALLOC_SHIFT_HIGH < 10);
4385
4386         pr_err("SLUB resiliency testing\n");
4387         pr_err("-----------------------\n");
4388         pr_err("A. Corruption after allocation\n");
4389
4390         p = kzalloc(16, GFP_KERNEL);
4391         p[16] = 0x12;
4392         pr_err("\n1. kmalloc-16: Clobber Redzone/next pointer 0x12->0x%p\n\n",
4393                p + 16);
4394
4395         validate_slab_cache(kmalloc_caches[4]);
4396
4397         /* Hmmm... The next two are dangerous */
4398         p = kzalloc(32, GFP_KERNEL);
4399         p[32 + sizeof(void *)] = 0x34;
4400         pr_err("\n2. kmalloc-32: Clobber next pointer/next slab 0x34 -> -0x%p\n",
4401                p);
4402         pr_err("If allocated object is overwritten then not detectable\n\n");
4403
4404         validate_slab_cache(kmalloc_caches[5]);
4405         p = kzalloc(64, GFP_KERNEL);
4406         p += 64 + (get_cycles() & 0xff) * sizeof(void *);
4407         *p = 0x56;
4408         pr_err("\n3. kmalloc-64: corrupting random byte 0x56->0x%p\n",
4409                p);
4410         pr_err("If allocated object is overwritten then not detectable\n\n");
4411         validate_slab_cache(kmalloc_caches[6]);
4412
4413         pr_err("\nB. Corruption after free\n");
4414         p = kzalloc(128, GFP_KERNEL);
4415         kfree(p);
4416         *p = 0x78;
4417         pr_err("1. kmalloc-128: Clobber first word 0x78->0x%p\n\n", p);
4418         validate_slab_cache(kmalloc_caches[7]);
4419
4420         p = kzalloc(256, GFP_KERNEL);
4421         kfree(p);
4422         p[50] = 0x9a;
4423         pr_err("\n2. kmalloc-256: Clobber 50th byte 0x9a->0x%p\n\n", p);
4424         validate_slab_cache(kmalloc_caches[8]);
4425
4426         p = kzalloc(512, GFP_KERNEL);
4427         kfree(p);
4428         p[512] = 0xab;
4429         pr_err("\n3. kmalloc-512: Clobber redzone 0xab->0x%p\n\n", p);
4430         validate_slab_cache(kmalloc_caches[9]);
4431 }
4432 #else
4433 #ifdef CONFIG_SYSFS
4434 static void resiliency_test(void) {};
4435 #endif
4436 #endif
4437
4438 #ifdef CONFIG_SYSFS
4439 enum slab_stat_type {
4440         SL_ALL,                 /* All slabs */
4441         SL_PARTIAL,             /* Only partially allocated slabs */
4442         SL_CPU,                 /* Only slabs used for cpu caches */
4443         SL_OBJECTS,             /* Determine allocated objects not slabs */
4444         SL_TOTAL                /* Determine object capacity not slabs */
4445 };
4446
4447 #define SO_ALL          (1 << SL_ALL)
4448 #define SO_PARTIAL      (1 << SL_PARTIAL)
4449 #define SO_CPU          (1 << SL_CPU)
4450 #define SO_OBJECTS      (1 << SL_OBJECTS)
4451 #define SO_TOTAL        (1 << SL_TOTAL)
4452
4453 static ssize_t show_slab_objects(struct kmem_cache *s,
4454                             char *buf, unsigned long flags)
4455 {
4456         unsigned long total = 0;
4457         int node;
4458         int x;
4459         unsigned long *nodes;
4460
4461         nodes = kzalloc(sizeof(unsigned long) * nr_node_ids, GFP_KERNEL);
4462         if (!nodes)
4463                 return -ENOMEM;
4464
4465         if (flags & SO_CPU) {
4466                 int cpu;
4467
4468                 for_each_possible_cpu(cpu) {
4469                         struct kmem_cache_cpu *c = per_cpu_ptr(s->cpu_slab,
4470                                                                cpu);
4471                         int node;
4472                         struct page *page;
4473
4474                         page = READ_ONCE(c->page);
4475                         if (!page)
4476                                 continue;
4477
4478                         node = page_to_nid(page);
4479                         if (flags & SO_TOTAL)
4480                                 x = page->objects;
4481                         else if (flags & SO_OBJECTS)
4482                                 x = page->inuse;
4483                         else
4484                                 x = 1;
4485
4486                         total += x;
4487                         nodes[node] += x;
4488
4489                         page = READ_ONCE(c->partial);
4490                         if (page) {
4491                                 node = page_to_nid(page);
4492                                 if (flags & SO_TOTAL)
4493                                         WARN_ON_ONCE(1);
4494                                 else if (flags & SO_OBJECTS)
4495                                         WARN_ON_ONCE(1);
4496                                 else
4497                                         x = page->pages;
4498                                 total += x;
4499                                 nodes[node] += x;
4500                         }
4501                 }
4502         }
4503
4504         get_online_mems();
4505 #ifdef CONFIG_SLUB_DEBUG
4506         if (flags & SO_ALL) {
4507                 struct kmem_cache_node *n;
4508
4509                 for_each_kmem_cache_node(s, node, n) {
4510
4511                         if (flags & SO_TOTAL)
4512                                 x = atomic_long_read(&n->total_objects);
4513                         else if (flags & SO_OBJECTS)
4514                                 x = atomic_long_read(&n->total_objects) -
4515                                         count_partial(n, count_free);
4516                         else
4517                                 x = atomic_long_read(&n->nr_slabs);
4518                         total += x;
4519                         nodes[node] += x;
4520                 }
4521
4522         } else
4523 #endif
4524         if (flags & SO_PARTIAL) {
4525                 struct kmem_cache_node *n;
4526
4527                 for_each_kmem_cache_node(s, node, n) {
4528                         if (flags & SO_TOTAL)
4529                                 x = count_partial(n, count_total);
4530                         else if (flags & SO_OBJECTS)
4531                                 x = count_partial(n, count_inuse);
4532                         else
4533                                 x = n->nr_partial;
4534                         total += x;
4535                         nodes[node] += x;
4536                 }
4537         }
4538         x = sprintf(buf, "%lu", total);
4539 #ifdef CONFIG_NUMA
4540         for (node = 0; node < nr_node_ids; node++)
4541                 if (nodes[node])
4542                         x += sprintf(buf + x, " N%d=%lu",
4543                                         node, nodes[node]);
4544 #endif
4545         put_online_mems();
4546         kfree(nodes);
4547         return x + sprintf(buf + x, "\n");
4548 }
4549
4550 #ifdef CONFIG_SLUB_DEBUG
4551 static int any_slab_objects(struct kmem_cache *s)
4552 {
4553         int node;
4554         struct kmem_cache_node *n;
4555
4556         for_each_kmem_cache_node(s, node, n)
4557                 if (atomic_long_read(&n->total_objects))
4558                         return 1;
4559
4560         return 0;
4561 }
4562 #endif
4563
4564 #define to_slab_attr(n) container_of(n, struct slab_attribute, attr)
4565 #define to_slab(n) container_of(n, struct kmem_cache, kobj)
4566
4567 struct slab_attribute {
4568         struct attribute attr;
4569         ssize_t (*show)(struct kmem_cache *s, char *buf);
4570         ssize_t (*store)(struct kmem_cache *s, const char *x, size_t count);
4571 };
4572
4573 #define SLAB_ATTR_RO(_name) \
4574         static struct slab_attribute _name##_attr = \
4575         __ATTR(_name, 0400, _name##_show, NULL)
4576
4577 #define SLAB_ATTR(_name) \
4578         static struct slab_attribute _name##_attr =  \
4579         __ATTR(_name, 0600, _name##_show, _name##_store)
4580
4581 static ssize_t slab_size_show(struct kmem_cache *s, char *buf)
4582 {
4583         return sprintf(buf, "%d\n", s->size);
4584 }
4585 SLAB_ATTR_RO(slab_size);
4586
4587 static ssize_t align_show(struct kmem_cache *s, char *buf)
4588 {
4589         return sprintf(buf, "%d\n", s->align);
4590 }
4591 SLAB_ATTR_RO(align);
4592
4593 static ssize_t object_size_show(struct kmem_cache *s, char *buf)
4594 {
4595         return sprintf(buf, "%d\n", s->object_size);
4596 }
4597 SLAB_ATTR_RO(object_size);
4598
4599 static ssize_t objs_per_slab_show(struct kmem_cache *s, char *buf)
4600 {
4601         return sprintf(buf, "%d\n", oo_objects(s->oo));
4602 }
4603 SLAB_ATTR_RO(objs_per_slab);
4604
4605 static ssize_t order_store(struct kmem_cache *s,
4606                                 const char *buf, size_t length)
4607 {
4608         unsigned long order;
4609         int err;
4610
4611         err = kstrtoul(buf, 10, &order);
4612         if (err)
4613                 return err;
4614
4615         if (order > slub_max_order || order < slub_min_order)
4616                 return -EINVAL;
4617
4618         calculate_sizes(s, order);
4619         return length;
4620 }
4621
4622 static ssize_t order_show(struct kmem_cache *s, char *buf)
4623 {
4624         return sprintf(buf, "%d\n", oo_order(s->oo));
4625 }
4626 SLAB_ATTR(order);
4627
4628 static ssize_t min_partial_show(struct kmem_cache *s, char *buf)
4629 {
4630         return sprintf(buf, "%lu\n", s->min_partial);
4631 }
4632
4633 static ssize_t min_partial_store(struct kmem_cache *s, const char *buf,
4634                                  size_t length)
4635 {
4636         unsigned long min;
4637         int err;
4638
4639         err = kstrtoul(buf, 10, &min);
4640         if (err)
4641                 return err;
4642
4643         set_min_partial(s, min);
4644         return length;
4645 }
4646 SLAB_ATTR(min_partial);
4647
4648 static ssize_t cpu_partial_show(struct kmem_cache *s, char *buf)
4649 {
4650         return sprintf(buf, "%u\n", s->cpu_partial);
4651 }
4652
4653 static ssize_t cpu_partial_store(struct kmem_cache *s, const char *buf,
4654                                  size_t length)
4655 {
4656         unsigned long objects;
4657         int err;
4658
4659         err = kstrtoul(buf, 10, &objects);
4660         if (err)
4661                 return err;
4662         if (objects && !kmem_cache_has_cpu_partial(s))
4663                 return -EINVAL;
4664
4665         s->cpu_partial = objects;
4666         flush_all(s);
4667         return length;
4668 }
4669 SLAB_ATTR(cpu_partial);
4670
4671 static ssize_t ctor_show(struct kmem_cache *s, char *buf)
4672 {
4673         if (!s->ctor)
4674                 return 0;
4675         return sprintf(buf, "%pS\n", s->ctor);
4676 }
4677 SLAB_ATTR_RO(ctor);
4678
4679 static ssize_t aliases_show(struct kmem_cache *s, char *buf)
4680 {
4681         return sprintf(buf, "%d\n", s->refcount < 0 ? 0 : s->refcount - 1);
4682 }
4683 SLAB_ATTR_RO(aliases);
4684
4685 static ssize_t partial_show(struct kmem_cache *s, char *buf)
4686 {
4687         return show_slab_objects(s, buf, SO_PARTIAL);
4688 }
4689 SLAB_ATTR_RO(partial);
4690
4691 static ssize_t cpu_slabs_show(struct kmem_cache *s, char *buf)
4692 {
4693         return show_slab_objects(s, buf, SO_CPU);
4694 }
4695 SLAB_ATTR_RO(cpu_slabs);
4696
4697 static ssize_t objects_show(struct kmem_cache *s, char *buf)
4698 {
4699         return show_slab_objects(s, buf, SO_ALL|SO_OBJECTS);
4700 }
4701 SLAB_ATTR_RO(objects);
4702
4703 static ssize_t objects_partial_show(struct kmem_cache *s, char *buf)
4704 {
4705         return show_slab_objects(s, buf, SO_PARTIAL|SO_OBJECTS);
4706 }
4707 SLAB_ATTR_RO(objects_partial);
4708
4709 static ssize_t slabs_cpu_partial_show(struct kmem_cache *s, char *buf)
4710 {
4711         int objects = 0;
4712         int pages = 0;
4713         int cpu;
4714         int len;
4715
4716         for_each_online_cpu(cpu) {
4717                 struct page *page = per_cpu_ptr(s->cpu_slab, cpu)->partial;
4718
4719                 if (page) {
4720                         pages += page->pages;
4721                         objects += page->pobjects;
4722                 }
4723         }
4724
4725         len = sprintf(buf, "%d(%d)", objects, pages);
4726
4727 #ifdef CONFIG_SMP
4728         for_each_online_cpu(cpu) {
4729                 struct page *page = per_cpu_ptr(s->cpu_slab, cpu) ->partial;
4730
4731                 if (page && len < PAGE_SIZE - 20)
4732                         len += sprintf(buf + len, " C%d=%d(%d)", cpu,
4733                                 page->pobjects, page->pages);
4734         }
4735 #endif
4736         return len + sprintf(buf + len, "\n");
4737 }
4738 SLAB_ATTR_RO(slabs_cpu_partial);
4739
4740 static ssize_t reclaim_account_show(struct kmem_cache *s, char *buf)
4741 {
4742         return sprintf(buf, "%d\n", !!(s->flags & SLAB_RECLAIM_ACCOUNT));
4743 }
4744
4745 static ssize_t reclaim_account_store(struct kmem_cache *s,
4746                                 const char *buf, size_t length)
4747 {
4748         s->flags &= ~SLAB_RECLAIM_ACCOUNT;
4749         if (buf[0] == '1')
4750                 s->flags |= SLAB_RECLAIM_ACCOUNT;
4751         return length;
4752 }
4753 SLAB_ATTR(reclaim_account);
4754
4755 static ssize_t hwcache_align_show(struct kmem_cache *s, char *buf)
4756 {
4757         return sprintf(buf, "%d\n", !!(s->flags & SLAB_HWCACHE_ALIGN));
4758 }
4759 SLAB_ATTR_RO(hwcache_align);
4760
4761 #ifdef CONFIG_ZONE_DMA
4762 static ssize_t cache_dma_show(struct kmem_cache *s, char *buf)
4763 {
4764         return sprintf(buf, "%d\n", !!(s->flags & SLAB_CACHE_DMA));
4765 }
4766 SLAB_ATTR_RO(cache_dma);
4767 #endif
4768
4769 static ssize_t destroy_by_rcu_show(struct kmem_cache *s, char *buf)
4770 {
4771         return sprintf(buf, "%d\n", !!(s->flags & SLAB_DESTROY_BY_RCU));
4772 }
4773 SLAB_ATTR_RO(destroy_by_rcu);
4774
4775 static ssize_t reserved_show(struct kmem_cache *s, char *buf)
4776 {
4777         return sprintf(buf, "%d\n", s->reserved);
4778 }
4779 SLAB_ATTR_RO(reserved);
4780
4781 #ifdef CONFIG_SLUB_DEBUG
4782 static ssize_t slabs_show(struct kmem_cache *s, char *buf)
4783 {
4784         return show_slab_objects(s, buf, SO_ALL);
4785 }
4786 SLAB_ATTR_RO(slabs);
4787
4788 static ssize_t total_objects_show(struct kmem_cache *s, char *buf)
4789 {
4790         return show_slab_objects(s, buf, SO_ALL|SO_TOTAL);
4791 }
4792 SLAB_ATTR_RO(total_objects);
4793
4794 static ssize_t sanity_checks_show(struct kmem_cache *s, char *buf)
4795 {
4796         return sprintf(buf, "%d\n", !!(s->flags & SLAB_CONSISTENCY_CHECKS));
4797 }
4798
4799 static ssize_t sanity_checks_store(struct kmem_cache *s,
4800                                 const char *buf, size_t length)
4801 {
4802         s->flags &= ~SLAB_CONSISTENCY_CHECKS;
4803         if (buf[0] == '1') {
4804                 s->flags &= ~__CMPXCHG_DOUBLE;
4805                 s->flags |= SLAB_CONSISTENCY_CHECKS;
4806         }
4807         return length;
4808 }
4809 SLAB_ATTR(sanity_checks);
4810
4811 static ssize_t trace_show(struct kmem_cache *s, char *buf)
4812 {
4813         return sprintf(buf, "%d\n", !!(s->flags & SLAB_TRACE));
4814 }
4815
4816 static ssize_t trace_store(struct kmem_cache *s, const char *buf,
4817                                                         size_t length)
4818 {
4819         /*
4820          * Tracing a merged cache is going to give confusing results
4821          * as well as cause other issues like converting a mergeable
4822          * cache into an umergeable one.
4823          */
4824         if (s->refcount > 1)
4825                 return -EINVAL;
4826
4827         s->flags &= ~SLAB_TRACE;
4828         if (buf[0] == '1') {
4829                 s->flags &= ~__CMPXCHG_DOUBLE;
4830                 s->flags |= SLAB_TRACE;
4831         }
4832         return length;
4833 }
4834 SLAB_ATTR(trace);
4835
4836 static ssize_t red_zone_show(struct kmem_cache *s, char *buf)
4837 {
4838         return sprintf(buf, "%d\n", !!(s->flags & SLAB_RED_ZONE));
4839 }
4840
4841 static ssize_t red_zone_store(struct kmem_cache *s,
4842                                 const char *buf, size_t length)
4843 {
4844         if (any_slab_objects(s))
4845                 return -EBUSY;
4846
4847         s->flags &= ~SLAB_RED_ZONE;
4848         if (buf[0] == '1') {
4849                 s->flags &= ~__CMPXCHG_DOUBLE;
4850                 s->flags |= SLAB_RED_ZONE;
4851         }
4852         calculate_sizes(s, -1);
4853         return length;
4854 }
4855 SLAB_ATTR(red_zone);
4856
4857 static ssize_t poison_show(struct kmem_cache *s, char *buf)
4858 {
4859         return sprintf(buf, "%d\n", !!(s->flags & SLAB_POISON));
4860 }
4861
4862 static ssize_t poison_store(struct kmem_cache *s,
4863                                 const char *buf, size_t length)
4864 {
4865         if (any_slab_objects(s))
4866                 return -EBUSY;
4867
4868         s->flags &= ~SLAB_POISON;
4869         if (buf[0] == '1') {
4870                 s->flags &= ~__CMPXCHG_DOUBLE;
4871                 s->flags |= SLAB_POISON;
4872         }
4873         calculate_sizes(s, -1);
4874         return length;
4875 }
4876 SLAB_ATTR(poison);
4877
4878 static ssize_t store_user_show(struct kmem_cache *s, char *buf)
4879 {
4880         return sprintf(buf, "%d\n", !!(s->flags & SLAB_STORE_USER));
4881 }
4882
4883 static ssize_t store_user_store(struct kmem_cache *s,
4884                                 const char *buf, size_t length)
4885 {
4886         if (any_slab_objects(s))
4887                 return -EBUSY;
4888
4889         s->flags &= ~SLAB_STORE_USER;
4890         if (buf[0] == '1') {
4891                 s->flags &= ~__CMPXCHG_DOUBLE;
4892                 s->flags |= SLAB_STORE_USER;
4893         }
4894         calculate_sizes(s, -1);
4895         return length;
4896 }
4897 SLAB_ATTR(store_user);
4898
4899 static ssize_t validate_show(struct kmem_cache *s, char *buf)
4900 {
4901         return 0;
4902 }
4903
4904 static ssize_t validate_store(struct kmem_cache *s,
4905                         const char *buf, size_t length)
4906 {
4907         int ret = -EINVAL;
4908
4909         if (buf[0] == '1') {
4910                 ret = validate_slab_cache(s);
4911                 if (ret >= 0)
4912                         ret = length;
4913         }
4914         return ret;
4915 }
4916 SLAB_ATTR(validate);
4917
4918 static ssize_t alloc_calls_show(struct kmem_cache *s, char *buf)
4919 {
4920         if (!(s->flags & SLAB_STORE_USER))
4921                 return -ENOSYS;
4922         return list_locations(s, buf, TRACK_ALLOC);
4923 }
4924 SLAB_ATTR_RO(alloc_calls);
4925
4926 static ssize_t free_calls_show(struct kmem_cache *s, char *buf)
4927 {
4928         if (!(s->flags & SLAB_STORE_USER))
4929                 return -ENOSYS;
4930         return list_locations(s, buf, TRACK_FREE);
4931 }
4932 SLAB_ATTR_RO(free_calls);
4933 #endif /* CONFIG_SLUB_DEBUG */
4934
4935 #ifdef CONFIG_FAILSLAB
4936 static ssize_t failslab_show(struct kmem_cache *s, char *buf)
4937 {
4938         return sprintf(buf, "%d\n", !!(s->flags & SLAB_FAILSLAB));
4939 }
4940
4941 static ssize_t failslab_store(struct kmem_cache *s, const char *buf,
4942                                                         size_t length)
4943 {
4944         if (s->refcount > 1)
4945                 return -EINVAL;
4946
4947         s->flags &= ~SLAB_FAILSLAB;
4948         if (buf[0] == '1')
4949                 s->flags |= SLAB_FAILSLAB;
4950         return length;
4951 }
4952 SLAB_ATTR(failslab);
4953 #endif
4954
4955 static ssize_t shrink_show(struct kmem_cache *s, char *buf)
4956 {
4957         return 0;
4958 }
4959
4960 static ssize_t shrink_store(struct kmem_cache *s,
4961                         const char *buf, size_t length)
4962 {
4963         if (buf[0] == '1')
4964                 kmem_cache_shrink(s);
4965         else
4966                 return -EINVAL;
4967         return length;
4968 }
4969 SLAB_ATTR(shrink);
4970
4971 #ifdef CONFIG_NUMA
4972 static ssize_t remote_node_defrag_ratio_show(struct kmem_cache *s, char *buf)
4973 {
4974         return sprintf(buf, "%d\n", s->remote_node_defrag_ratio / 10);
4975 }
4976
4977 static ssize_t remote_node_defrag_ratio_store(struct kmem_cache *s,
4978                                 const char *buf, size_t length)
4979 {
4980         unsigned long ratio;
4981         int err;
4982
4983         err = kstrtoul(buf, 10, &ratio);
4984         if (err)
4985                 return err;
4986
4987         if (ratio <= 100)
4988                 s->remote_node_defrag_ratio = ratio * 10;
4989
4990         return length;
4991 }
4992 SLAB_ATTR(remote_node_defrag_ratio);
4993 #endif
4994
4995 #ifdef CONFIG_SLUB_STATS
4996 static int show_stat(struct kmem_cache *s, char *buf, enum stat_item si)
4997 {
4998         unsigned long sum  = 0;
4999         int cpu;
5000         int len;
5001         int *data = kmalloc(nr_cpu_ids * sizeof(int), GFP_KERNEL);
5002
5003         if (!data)
5004                 return -ENOMEM;
5005
5006         for_each_online_cpu(cpu) {
5007                 unsigned x = per_cpu_ptr(s->cpu_slab, cpu)->stat[si];
5008
5009                 data[cpu] = x;
5010                 sum += x;
5011         }
5012
5013         len = sprintf(buf, "%lu", sum);
5014
5015 #ifdef CONFIG_SMP
5016         for_each_online_cpu(cpu) {
5017                 if (data[cpu] && len < PAGE_SIZE - 20)
5018                         len += sprintf(buf + len, " C%d=%u", cpu, data[cpu]);
5019         }
5020 #endif
5021         kfree(data);
5022         return len + sprintf(buf + len, "\n");
5023 }
5024
5025 static void clear_stat(struct kmem_cache *s, enum stat_item si)
5026 {
5027         int cpu;
5028
5029         for_each_online_cpu(cpu)
5030                 per_cpu_ptr(s->cpu_slab, cpu)->stat[si] = 0;
5031 }
5032
5033 #define STAT_ATTR(si, text)                                     \
5034 static ssize_t text##_show(struct kmem_cache *s, char *buf)     \
5035 {                                                               \
5036         return show_stat(s, buf, si);                           \
5037 }                                                               \
5038 static ssize_t text##_store(struct kmem_cache *s,               \
5039                                 const char *buf, size_t length) \
5040 {                                                               \
5041         if (buf[0] != '0')                                      \
5042                 return -EINVAL;                                 \
5043         clear_stat(s, si);                                      \
5044         return length;                                          \
5045 }                                                               \
5046 SLAB_ATTR(text);                                                \
5047
5048 STAT_ATTR(ALLOC_FASTPATH, alloc_fastpath);
5049 STAT_ATTR(ALLOC_SLOWPATH, alloc_slowpath);
5050 STAT_ATTR(FREE_FASTPATH, free_fastpath);
5051 STAT_ATTR(FREE_SLOWPATH, free_slowpath);
5052 STAT_ATTR(FREE_FROZEN, free_frozen);
5053 STAT_ATTR(FREE_ADD_PARTIAL, free_add_partial);
5054 STAT_ATTR(FREE_REMOVE_PARTIAL, free_remove_partial);
5055 STAT_ATTR(ALLOC_FROM_PARTIAL, alloc_from_partial);
5056 STAT_ATTR(ALLOC_SLAB, alloc_slab);
5057 STAT_ATTR(ALLOC_REFILL, alloc_refill);
5058 STAT_ATTR(ALLOC_NODE_MISMATCH, alloc_node_mismatch);
5059 STAT_ATTR(FREE_SLAB, free_slab);
5060 STAT_ATTR(CPUSLAB_FLUSH, cpuslab_flush);
5061 STAT_ATTR(DEACTIVATE_FULL, deactivate_full);
5062 STAT_ATTR(DEACTIVATE_EMPTY, deactivate_empty);
5063 STAT_ATTR(DEACTIVATE_TO_HEAD, deactivate_to_head);
5064 STAT_ATTR(DEACTIVATE_TO_TAIL, deactivate_to_tail);
5065 STAT_ATTR(DEACTIVATE_REMOTE_FREES, deactivate_remote_frees);
5066 STAT_ATTR(DEACTIVATE_BYPASS, deactivate_bypass);
5067 STAT_ATTR(ORDER_FALLBACK, order_fallback);
5068 STAT_ATTR(CMPXCHG_DOUBLE_CPU_FAIL, cmpxchg_double_cpu_fail);
5069 STAT_ATTR(CMPXCHG_DOUBLE_FAIL, cmpxchg_double_fail);
5070 STAT_ATTR(CPU_PARTIAL_ALLOC, cpu_partial_alloc);
5071 STAT_ATTR(CPU_PARTIAL_FREE, cpu_partial_free);
5072 STAT_ATTR(CPU_PARTIAL_NODE, cpu_partial_node);
5073 STAT_ATTR(CPU_PARTIAL_DRAIN, cpu_partial_drain);
5074 #endif
5075
5076 static struct attribute *slab_attrs[] = {
5077         &slab_size_attr.attr,
5078         &object_size_attr.attr,
5079         &objs_per_slab_attr.attr,
5080         &order_attr.attr,
5081         &min_partial_attr.attr,
5082         &cpu_partial_attr.attr,
5083         &objects_attr.attr,
5084         &objects_partial_attr.attr,
5085         &partial_attr.attr,
5086         &cpu_slabs_attr.attr,
5087         &ctor_attr.attr,
5088         &aliases_attr.attr,
5089         &align_attr.attr,
5090         &hwcache_align_attr.attr,
5091         &reclaim_account_attr.attr,
5092         &destroy_by_rcu_attr.attr,
5093         &shrink_attr.attr,
5094         &reserved_attr.attr,
5095         &slabs_cpu_partial_attr.attr,
5096 #ifdef CONFIG_SLUB_DEBUG
5097         &total_objects_attr.attr,
5098         &slabs_attr.attr,
5099         &sanity_checks_attr.attr,
5100         &trace_attr.attr,
5101         &red_zone_attr.attr,
5102         &poison_attr.attr,
5103         &store_user_attr.attr,
5104         &validate_attr.attr,
5105         &alloc_calls_attr.attr,
5106         &free_calls_attr.attr,
5107 #endif
5108 #ifdef CONFIG_ZONE_DMA
5109         &cache_dma_attr.attr,
5110 #endif
5111 #ifdef CONFIG_NUMA
5112         &remote_node_defrag_ratio_attr.attr,
5113 #endif
5114 #ifdef CONFIG_SLUB_STATS
5115         &alloc_fastpath_attr.attr,
5116         &alloc_slowpath_attr.attr,
5117         &free_fastpath_attr.attr,
5118         &free_slowpath_attr.attr,
5119         &free_frozen_attr.attr,
5120         &free_add_partial_attr.attr,
5121         &free_remove_partial_attr.attr,
5122         &alloc_from_partial_attr.attr,
5123         &alloc_slab_attr.attr,
5124         &alloc_refill_attr.attr,
5125         &alloc_node_mismatch_attr.attr,
5126         &free_slab_attr.attr,
5127         &cpuslab_flush_attr.attr,
5128         &deactivate_full_attr.attr,
5129         &deactivate_empty_attr.attr,
5130         &deactivate_to_head_attr.attr,
5131         &deactivate_to_tail_attr.attr,
5132         &deactivate_remote_frees_attr.attr,
5133         &deactivate_bypass_attr.attr,
5134         &order_fallback_attr.attr,
5135         &cmpxchg_double_fail_attr.attr,
5136         &cmpxchg_double_cpu_fail_attr.attr,
5137         &cpu_partial_alloc_attr.attr,
5138         &cpu_partial_free_attr.attr,
5139         &cpu_partial_node_attr.attr,
5140         &cpu_partial_drain_attr.attr,
5141 #endif
5142 #ifdef CONFIG_FAILSLAB
5143         &failslab_attr.attr,
5144 #endif
5145
5146         NULL
5147 };
5148
5149 static struct attribute_group slab_attr_group = {
5150         .attrs = slab_attrs,
5151 };
5152
5153 static ssize_t slab_attr_show(struct kobject *kobj,
5154                                 struct attribute *attr,
5155                                 char *buf)
5156 {
5157         struct slab_attribute *attribute;
5158         struct kmem_cache *s;
5159         int err;
5160
5161         attribute = to_slab_attr(attr);
5162         s = to_slab(kobj);
5163
5164         if (!attribute->show)
5165                 return -EIO;
5166
5167         err = attribute->show(s, buf);
5168
5169         return err;
5170 }
5171
5172 static ssize_t slab_attr_store(struct kobject *kobj,
5173                                 struct attribute *attr,
5174                                 const char *buf, size_t len)
5175 {
5176         struct slab_attribute *attribute;
5177         struct kmem_cache *s;
5178         int err;
5179
5180         attribute = to_slab_attr(attr);
5181         s = to_slab(kobj);
5182
5183         if (!attribute->store)
5184                 return -EIO;
5185
5186         err = attribute->store(s, buf, len);
5187 #ifdef CONFIG_MEMCG
5188         if (slab_state >= FULL && err >= 0 && is_root_cache(s)) {
5189                 struct kmem_cache *c;
5190
5191                 mutex_lock(&slab_mutex);
5192                 if (s->max_attr_size < len)
5193                         s->max_attr_size = len;
5194
5195                 /*
5196                  * This is a best effort propagation, so this function's return
5197                  * value will be determined by the parent cache only. This is
5198                  * basically because not all attributes will have a well
5199                  * defined semantics for rollbacks - most of the actions will
5200                  * have permanent effects.
5201                  *
5202                  * Returning the error value of any of the children that fail
5203                  * is not 100 % defined, in the sense that users seeing the
5204                  * error code won't be able to know anything about the state of
5205                  * the cache.
5206                  *
5207                  * Only returning the error code for the parent cache at least
5208                  * has well defined semantics. The cache being written to
5209                  * directly either failed or succeeded, in which case we loop
5210                  * through the descendants with best-effort propagation.
5211                  */
5212                 for_each_memcg_cache(c, s)
5213                         attribute->store(c, buf, len);
5214                 mutex_unlock(&slab_mutex);
5215         }
5216 #endif
5217         return err;
5218 }
5219
5220 static void memcg_propagate_slab_attrs(struct kmem_cache *s)
5221 {
5222 #ifdef CONFIG_MEMCG
5223         int i;
5224         char *buffer = NULL;
5225         struct kmem_cache *root_cache;
5226
5227         if (is_root_cache(s))
5228                 return;
5229
5230         root_cache = s->memcg_params.root_cache;
5231
5232         /*
5233          * This mean this cache had no attribute written. Therefore, no point
5234          * in copying default values around
5235          */
5236         if (!root_cache->max_attr_size)
5237                 return;
5238
5239         for (i = 0; i < ARRAY_SIZE(slab_attrs); i++) {
5240                 char mbuf[64];
5241                 char *buf;
5242                 struct slab_attribute *attr = to_slab_attr(slab_attrs[i]);
5243
5244                 if (!attr || !attr->store || !attr->show)
5245                         continue;
5246
5247                 /*
5248                  * It is really bad that we have to allocate here, so we will
5249                  * do it only as a fallback. If we actually allocate, though,
5250                  * we can just use the allocated buffer until the end.
5251                  *
5252                  * Most of the slub attributes will tend to be very small in
5253                  * size, but sysfs allows buffers up to a page, so they can
5254                  * theoretically happen.
5255                  */
5256                 if (buffer)
5257                         buf = buffer;
5258                 else if (root_cache->max_attr_size < ARRAY_SIZE(mbuf))
5259                         buf = mbuf;
5260                 else {
5261                         buffer = (char *) get_zeroed_page(GFP_KERNEL);
5262                         if (WARN_ON(!buffer))
5263                                 continue;
5264                         buf = buffer;
5265                 }
5266
5267                 attr->show(root_cache, buf);
5268                 attr->store(s, buf, strlen(buf));
5269         }
5270
5271         if (buffer)
5272                 free_page((unsigned long)buffer);
5273 #endif
5274 }
5275
5276 static void kmem_cache_release(struct kobject *k)
5277 {
5278         slab_kmem_cache_release(to_slab(k));
5279 }
5280
5281 static const struct sysfs_ops slab_sysfs_ops = {
5282         .show = slab_attr_show,
5283         .store = slab_attr_store,
5284 };
5285
5286 static struct kobj_type slab_ktype = {
5287         .sysfs_ops = &slab_sysfs_ops,
5288         .release = kmem_cache_release,
5289 };
5290
5291 static int uevent_filter(struct kset *kset, struct kobject *kobj)
5292 {
5293         struct kobj_type *ktype = get_ktype(kobj);
5294
5295         if (ktype == &slab_ktype)
5296                 return 1;
5297         return 0;
5298 }
5299
5300 static const struct kset_uevent_ops slab_uevent_ops = {
5301         .filter = uevent_filter,
5302 };
5303
5304 static struct kset *slab_kset;
5305
5306 static inline struct kset *cache_kset(struct kmem_cache *s)
5307 {
5308 #ifdef CONFIG_MEMCG
5309         if (!is_root_cache(s))
5310                 return s->memcg_params.root_cache->memcg_kset;
5311 #endif
5312         return slab_kset;
5313 }
5314
5315 #define ID_STR_LENGTH 64
5316
5317 /* Create a unique string id for a slab cache:
5318  *
5319  * Format       :[flags-]size
5320  */
5321 static char *create_unique_id(struct kmem_cache *s)
5322 {
5323         char *name = kmalloc(ID_STR_LENGTH, GFP_KERNEL);
5324         char *p = name;
5325
5326         BUG_ON(!name);
5327
5328         *p++ = ':';
5329         /*
5330          * First flags affecting slabcache operations. We will only
5331          * get here for aliasable slabs so we do not need to support
5332          * too many flags. The flags here must cover all flags that
5333          * are matched during merging to guarantee that the id is
5334          * unique.
5335          */
5336         if (s->flags & SLAB_CACHE_DMA)
5337                 *p++ = 'd';
5338         if (s->flags & SLAB_RECLAIM_ACCOUNT)
5339                 *p++ = 'a';
5340         if (s->flags & SLAB_CONSISTENCY_CHECKS)
5341                 *p++ = 'F';
5342         if (!(s->flags & SLAB_NOTRACK))
5343                 *p++ = 't';
5344         if (s->flags & SLAB_ACCOUNT)
5345                 *p++ = 'A';
5346         if (p != name + 1)
5347                 *p++ = '-';
5348         p += sprintf(p, "%07d", s->size);
5349
5350         BUG_ON(p > name + ID_STR_LENGTH - 1);
5351         return name;
5352 }
5353
5354 static int sysfs_slab_add(struct kmem_cache *s)
5355 {
5356         int err;
5357         const char *name;
5358         int unmergeable = slab_unmergeable(s);
5359
5360         if (unmergeable) {
5361                 /*
5362                  * Slabcache can never be merged so we can use the name proper.
5363                  * This is typically the case for debug situations. In that
5364                  * case we can catch duplicate names easily.
5365                  */
5366                 sysfs_remove_link(&slab_kset->kobj, s->name);
5367                 name = s->name;
5368         } else {
5369                 /*
5370                  * Create a unique name for the slab as a target
5371                  * for the symlinks.
5372                  */
5373                 name = create_unique_id(s);
5374         }
5375
5376         s->kobj.kset = cache_kset(s);
5377         err = kobject_init_and_add(&s->kobj, &slab_ktype, NULL, "%s", name);
5378         if (err)
5379                 goto out;
5380
5381         err = sysfs_create_group(&s->kobj, &slab_attr_group);
5382         if (err)
5383                 goto out_del_kobj;
5384
5385 #ifdef CONFIG_MEMCG
5386         if (is_root_cache(s)) {
5387                 s->memcg_kset = kset_create_and_add("cgroup", NULL, &s->kobj);
5388                 if (!s->memcg_kset) {
5389                         err = -ENOMEM;
5390                         goto out_del_kobj;
5391                 }
5392         }
5393 #endif
5394
5395         kobject_uevent(&s->kobj, KOBJ_ADD);
5396         if (!unmergeable) {
5397                 /* Setup first alias */
5398                 sysfs_slab_alias(s, s->name);
5399         }
5400 out:
5401         if (!unmergeable)
5402                 kfree(name);
5403         return err;
5404 out_del_kobj:
5405         kobject_del(&s->kobj);
5406         goto out;
5407 }
5408
5409 void sysfs_slab_remove(struct kmem_cache *s)
5410 {
5411         if (slab_state < FULL)
5412                 /*
5413                  * Sysfs has not been setup yet so no need to remove the
5414                  * cache from sysfs.
5415                  */
5416                 return;
5417
5418 #ifdef CONFIG_MEMCG
5419         kset_unregister(s->memcg_kset);
5420 #endif
5421         kobject_uevent(&s->kobj, KOBJ_REMOVE);
5422         kobject_del(&s->kobj);
5423         kobject_put(&s->kobj);
5424 }
5425
5426 /*
5427  * Need to buffer aliases during bootup until sysfs becomes
5428  * available lest we lose that information.
5429  */
5430 struct saved_alias {
5431         struct kmem_cache *s;
5432         const char *name;
5433         struct saved_alias *next;
5434 };
5435
5436 static struct saved_alias *alias_list;
5437
5438 static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
5439 {
5440         struct saved_alias *al;
5441
5442         if (slab_state == FULL) {
5443                 /*
5444                  * If we have a leftover link then remove it.
5445                  */
5446                 sysfs_remove_link(&slab_kset->kobj, name);
5447                 return sysfs_create_link(&slab_kset->kobj, &s->kobj, name);
5448         }
5449
5450         al = kmalloc(sizeof(struct saved_alias), GFP_KERNEL);
5451         if (!al)
5452                 return -ENOMEM;
5453
5454         al->s = s;
5455         al->name = name;
5456         al->next = alias_list;
5457         alias_list = al;
5458         return 0;
5459 }
5460
5461 static int __init slab_sysfs_init(void)
5462 {
5463         struct kmem_cache *s;
5464         int err;
5465
5466         mutex_lock(&slab_mutex);
5467
5468         slab_kset = kset_create_and_add("slab", &slab_uevent_ops, kernel_kobj);
5469         if (!slab_kset) {
5470                 mutex_unlock(&slab_mutex);
5471                 pr_err("Cannot register slab subsystem.\n");
5472                 return -ENOSYS;
5473         }
5474
5475         slab_state = FULL;
5476
5477         list_for_each_entry(s, &slab_caches, list) {
5478                 err = sysfs_slab_add(s);
5479                 if (err)
5480                         pr_err("SLUB: Unable to add boot slab %s to sysfs\n",
5481                                s->name);
5482         }
5483
5484         while (alias_list) {
5485                 struct saved_alias *al = alias_list;
5486
5487                 alias_list = alias_list->next;
5488                 err = sysfs_slab_alias(al->s, al->name);
5489                 if (err)
5490                         pr_err("SLUB: Unable to add boot slab alias %s to sysfs\n",
5491                                al->name);
5492                 kfree(al);
5493         }
5494
5495         mutex_unlock(&slab_mutex);
5496         resiliency_test();
5497         return 0;
5498 }
5499
5500 __initcall(slab_sysfs_init);
5501 #endif /* CONFIG_SYSFS */
5502
5503 /*
5504  * The /proc/slabinfo ABI
5505  */
5506 #ifdef CONFIG_SLABINFO
5507 void get_slabinfo(struct kmem_cache *s, struct slabinfo *sinfo)
5508 {
5509         unsigned long nr_slabs = 0;
5510         unsigned long nr_objs = 0;
5511         unsigned long nr_free = 0;
5512         int node;
5513         struct kmem_cache_node *n;
5514
5515         for_each_kmem_cache_node(s, node, n) {
5516                 nr_slabs += node_nr_slabs(n);
5517                 nr_objs += node_nr_objs(n);
5518                 nr_free += count_partial(n, count_free);
5519         }
5520
5521         sinfo->active_objs = nr_objs - nr_free;
5522         sinfo->num_objs = nr_objs;
5523         sinfo->active_slabs = nr_slabs;
5524         sinfo->num_slabs = nr_slabs;
5525         sinfo->objects_per_slab = oo_objects(s->oo);
5526         sinfo->cache_order = oo_order(s->oo);
5527 }
5528
5529 void slabinfo_show_stats(struct seq_file *m, struct kmem_cache *s)
5530 {
5531 }
5532
5533 ssize_t slabinfo_write(struct file *file, const char __user *buffer,
5534                        size_t count, loff_t *ppos)
5535 {
5536         return -EIO;
5537 }
5538 #endif /* CONFIG_SLABINFO */