{
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 */
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