diff options
Diffstat (limited to 'mm/slab_common.c')
-rw-r--r-- | mm/slab_common.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/mm/slab_common.c b/mm/slab_common.c index dcdab81bd240..06aeaf091f21 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -834,14 +834,9 @@ void print_slabinfo_header(struct seq_file *m) seq_putc(m, '\n'); } -static void *s_start(struct seq_file *m, loff_t *pos) +void *slab_start(struct seq_file *m, loff_t *pos) { - loff_t n = *pos; - mutex_lock(&slab_mutex); - if (!n) - print_slabinfo_header(m); - return seq_list_start(&slab_caches, *pos); } @@ -903,10 +898,12 @@ int cache_show(struct kmem_cache *s, struct seq_file *m) return 0; } -static int s_show(struct seq_file *m, void *p) +static int slab_show(struct seq_file *m, void *p) { struct kmem_cache *s = list_entry(p, struct kmem_cache, list); + if (p == slab_caches.next) + print_slabinfo_header(m); if (!is_root_cache(s)) return 0; return cache_show(s, m); @@ -926,10 +923,10 @@ static int s_show(struct seq_file *m, void *p) * + further values on SMP and with statistics enabled */ static const struct seq_operations slabinfo_op = { - .start = s_start, + .start = slab_start, .next = slab_next, .stop = slab_stop, - .show = s_show, + .show = slab_show, }; static int slabinfo_open(struct inode *inode, struct file *file) |