aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/proc/proc_misc.c21
-rw-r--r--include/linux/slab.h5
-rw-r--r--include/linux/slab_def.h3
-rw-r--r--include/linux/slub_def.h2
-rw-r--r--init/Kconfig6
-rw-r--r--mm/slab.c2
-rw-r--r--mm/slub.c11
7 files changed, 23 insertions, 27 deletions
diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c
index a11968bc051..3462bfde89f 100644
--- a/fs/proc/proc_misc.c
+++ b/fs/proc/proc_misc.c
@@ -410,7 +410,7 @@ static const struct file_operations proc_modules_operations = {
410}; 410};
411#endif 411#endif
412 412
413#ifdef CONFIG_SLAB 413#ifdef CONFIG_SLABINFO
414static int slabinfo_open(struct inode *inode, struct file *file) 414static int slabinfo_open(struct inode *inode, struct file *file)
415{ 415{
416 return seq_open(file, &slabinfo_op); 416 return seq_open(file, &slabinfo_op);
@@ -451,20 +451,6 @@ static const struct file_operations proc_slabstats_operations = {
451#endif 451#endif
452#endif 452#endif
453 453
454#ifdef CONFIG_SLUB
455static int slabinfo_open(struct inode *inode, struct file *file)
456{
457 return seq_open(file, &slabinfo_op);
458}
459
460static const struct file_operations proc_slabinfo_operations = {
461 .open = slabinfo_open,
462 .read = seq_read,
463 .llseek = seq_lseek,
464 .release = seq_release,
465};
466#endif
467
468static int show_stat(struct seq_file *p, void *v) 454static int show_stat(struct seq_file *p, void *v)
469{ 455{
470 int i; 456 int i;
@@ -742,15 +728,12 @@ void __init proc_misc_init(void)
742#endif 728#endif
743 create_seq_entry("stat", 0, &proc_stat_operations); 729 create_seq_entry("stat", 0, &proc_stat_operations);
744 create_seq_entry("interrupts", 0, &proc_interrupts_operations); 730 create_seq_entry("interrupts", 0, &proc_interrupts_operations);
745#ifdef CONFIG_SLAB 731#ifdef CONFIG_SLABINFO
746 create_seq_entry("slabinfo",S_IWUSR|S_IRUGO,&proc_slabinfo_operations); 732 create_seq_entry("slabinfo",S_IWUSR|S_IRUGO,&proc_slabinfo_operations);
747#ifdef CONFIG_DEBUG_SLAB_LEAK 733#ifdef CONFIG_DEBUG_SLAB_LEAK
748 create_seq_entry("slab_allocators", 0 ,&proc_slabstats_operations); 734 create_seq_entry("slab_allocators", 0 ,&proc_slabstats_operations);
749#endif 735#endif
750#endif 736#endif
751#ifdef CONFIG_SLUB
752 create_seq_entry("slabinfo", S_IWUSR|S_IRUGO, &proc_slabinfo_operations);
753#endif
754 create_seq_entry("buddyinfo",S_IRUGO, &fragmentation_file_operations); 737 create_seq_entry("buddyinfo",S_IRUGO, &fragmentation_file_operations);
755 create_seq_entry("pagetypeinfo", S_IRUGO, &pagetypeinfo_file_ops); 738 create_seq_entry("pagetypeinfo", S_IRUGO, &pagetypeinfo_file_ops);
756 create_seq_entry("vmstat",S_IRUGO, &proc_vmstat_file_operations); 739 create_seq_entry("vmstat",S_IRUGO, &proc_vmstat_file_operations);
diff --git a/include/linux/slab.h b/include/linux/slab.h
index f3a8eecd99f..f62caaad94e 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -271,5 +271,10 @@ static inline void *kzalloc(size_t size, gfp_t flags)
271 return kmalloc(size, flags | __GFP_ZERO); 271 return kmalloc(size, flags | __GFP_ZERO);
272} 272}
273 273
274#ifdef CONFIG_SLABINFO
275extern const struct seq_operations slabinfo_op;
276ssize_t slabinfo_write(struct file *, const char __user *, size_t, loff_t *);
277#endif
278
274#endif /* __KERNEL__ */ 279#endif /* __KERNEL__ */
275#endif /* _LINUX_SLAB_H */ 280#endif /* _LINUX_SLAB_H */
diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h
index 32bdc2ffd71..fcc48096ee6 100644
--- a/include/linux/slab_def.h
+++ b/include/linux/slab_def.h
@@ -95,7 +95,4 @@ found:
95 95
96#endif /* CONFIG_NUMA */ 96#endif /* CONFIG_NUMA */
97 97
98extern const struct seq_operations slabinfo_op;
99ssize_t slabinfo_write(struct file *, const char __user *, size_t, loff_t *);
100
101#endif /* _LINUX_SLAB_DEF_H */ 98#endif /* _LINUX_SLAB_DEF_H */
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
index b7d9408a00f..40801e754af 100644
--- a/include/linux/slub_def.h
+++ b/include/linux/slub_def.h
@@ -200,6 +200,4 @@ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node)
200} 200}
201#endif 201#endif
202 202
203extern const struct seq_operations slabinfo_op;
204
205#endif /* _LINUX_SLUB_DEF_H */ 203#endif /* _LINUX_SLUB_DEF_H */
diff --git a/init/Kconfig b/init/Kconfig
index 404bbf3699b..b9d11a899b8 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -658,6 +658,12 @@ endchoice
658 658
659endmenu # General setup 659endmenu # General setup
660 660
661config SLABINFO
662 bool
663 depends on PROC_FS
664 depends on SLAB || SLUB
665 default y
666
661config RT_MUTEXES 667config RT_MUTEXES
662 boolean 668 boolean
663 select PLIST 669 select PLIST
diff --git a/mm/slab.c b/mm/slab.c
index 2e338a5f7b1..aebb9f68557 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -4105,7 +4105,7 @@ out:
4105 schedule_delayed_work(work, round_jiffies_relative(REAPTIMEOUT_CPUC)); 4105 schedule_delayed_work(work, round_jiffies_relative(REAPTIMEOUT_CPUC));
4106} 4106}
4107 4107
4108#ifdef CONFIG_PROC_FS 4108#ifdef CONFIG_SLABINFO
4109 4109
4110static void print_slabinfo_header(struct seq_file *m) 4110static void print_slabinfo_header(struct seq_file *m)
4111{ 4111{
diff --git a/mm/slub.c b/mm/slub.c
index 903dabd92da..474945ecd89 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4127,7 +4127,14 @@ __initcall(slab_sysfs_init);
4127/* 4127/*
4128 * The /proc/slabinfo ABI 4128 * The /proc/slabinfo ABI
4129 */ 4129 */
4130#ifdef CONFIG_PROC_FS 4130#ifdef CONFIG_SLABINFO
4131
4132ssize_t slabinfo_write(struct file *file, const char __user * buffer,
4133 size_t count, loff_t *ppos)
4134{
4135 return -EINVAL;
4136}
4137
4131 4138
4132static void print_slabinfo_header(struct seq_file *m) 4139static void print_slabinfo_header(struct seq_file *m)
4133{ 4140{
@@ -4201,4 +4208,4 @@ const struct seq_operations slabinfo_op = {
4201 .show = s_show, 4208 .show = s_show,
4202}; 4209};
4203 4210
4204#endif /* CONFIG_PROC_FS */ 4211#endif /* CONFIG_SLABINFO */