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