{
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);
proc_net_remove(net, "route");
}
---- a/net/ipv4/igmp.c
-+++ b/net/ipv4/igmp.c
-@@ -2673,6 +2673,8 @@ static struct pernet_operations igmp_net
-
- int __init igmp_mc_proc_init(void)
- {
-+ if (IS_ENABLED(CONFIG_PROC_STRIPPED))
-+ return 0;
- return register_pernet_subsys(&igmp_net_ops);
- }
- #endif
---- 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