{
char name [MAX_NAMELEN];
-+ if (IS_ENABLED(CONFIG_PROC_STRIPPED))
++ if (IS_ENABLED(CONFIG_PROC_STRIPPED) && !IS_ENABLED(CONFIG_SMP))
+ return;
+
if (!root_irq_dir || (desc->irq_data.chip == &no_irq_chip) || desc->dir)
{
char name [MAX_NAMELEN];
-+ if (IS_ENABLED(CONFIG_PROC_STRIPPED))
++ if (IS_ENABLED(CONFIG_PROC_STRIPPED) && !IS_ENABLED(CONFIG_SMP))
+ return;
+
if (!root_irq_dir || !desc->dir)
unsigned int irq;
struct irq_desc *desc;
-+ if (IS_ENABLED(CONFIG_PROC_STRIPPED))
++ if (IS_ENABLED(CONFIG_PROC_STRIPPED) && !IS_ENABLED(CONFIG_SMP))
+ return;
+
/* create /proc/irq */
goto err;
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4584,9 +4584,11 @@ static int __net_init dev_proc_net_init(
+@@ -4588,9 +4588,11 @@ static int __net_init dev_proc_net_init(
if (!proc_net_fops_create(net, "dev", S_IRUGO, &dev_seq_fops))
goto out;
goto out_softnet;
if (wext_proc_init(net))
-@@ -4595,9 +4597,11 @@ static int __net_init dev_proc_net_init(
+@@ -4599,9 +4601,11 @@ static int __net_init dev_proc_net_init(
out:
return rc;
out_ptype:
out_dev:
proc_net_remove(net, "dev");
goto out;
-@@ -4607,8 +4611,10 @@ static void __net_exit dev_proc_net_exit
+@@ -4611,8 +4615,10 @@ static void __net_exit dev_proc_net_exit
{
wext_proc_exit(net);
--- a/net/ipv4/fib_trie.c
+++ b/net/ipv4/fib_trie.c
-@@ -2607,10 +2607,12 @@ static const struct file_operations fib_
+@@ -2608,10 +2608,12 @@ static const struct file_operations fib_
int __net_init fib_proc_init(struct net *net)
{
&fib_triestat_fops))
goto out2;
-@@ -2629,8 +2631,10 @@ out1:
+@@ -2630,8 +2632,10 @@ out1:
void __net_exit fib_proc_exit(struct net *net)
{
proc_net_remove(net, "route");
}
---- a/net/ipv4/ipmr.c
-+++ b/net/ipv4/ipmr.c
-@@ -71,6 +71,10 @@
- #define CONFIG_IP_PIMSM 1
- #endif
-
-+#ifdef CONFIG_PROC_STRIPPED
-+#undef CONFIG_PROC_FS
-+#endif
-+
- struct mr_table {
- struct list_head list;
- #ifdef CONFIG_NET_NS
--- a/net/ipv4/proc.c
+++ b/net/ipv4/proc.c
@@ -502,6 +502,9 @@ static __net_initdata struct pernet_oper