[PATCH] for Linux IRDA initialisation bug 2.4.5

From: Matt Chapman (matthewc@cse.unsw.edu.au)
Date: Fri Jun 01 2001 - 08:32:46 EST


I've found that if you compile IRDA into the kernel, irda_proto_init
gets called twice - once at do_initcalls time, and once explicitly
in do_basic_setup - eventually resulting in a hang (as
register_netdevice_notifier gets called twice with the same struct,
and it's list becomes circular).

Here's a suggested patch.

Cheers,
Matt

diff -urN linux-2.4.5/init/main.c linux-2.4.5-irdafix/init/main.c
--- linux-2.4.5/init/main.c Wed May 23 02:35:42 2001
+++ linux-2.4.5-irdafix/init/main.c Fri Jun 1 23:03:00 2001
@@ -61,10 +61,6 @@
 #include <linux/isapnp.h>
 #endif
 
-#ifdef CONFIG_IRDA
-#include <net/irda/irda_device.h>
-#endif
-
 #ifdef CONFIG_X86_IO_APIC
 #include <asm/smp.h>
 #endif
@@ -698,10 +694,6 @@
         start_context_thread();
         do_initcalls();
 
-#ifdef CONFIG_IRDA
- irda_proto_init();
- irda_device_init(); /* Must be done after protocol initialization */
-#endif
 #ifdef CONFIG_PCMCIA
         init_pcmcia_ds(); /* Do this last */
 #endif
diff -urN linux-2.4.5/net/irda/af_irda.c linux-2.4.5-irdafix/net/irda/af_irda.c
--- linux-2.4.5/net/irda/af_irda.c Sun May 20 10:47:55 2001
+++ linux-2.4.5-irdafix/net/irda/af_irda.c Fri Jun 1 23:04:25 2001
@@ -2411,9 +2411,7 @@
         register_netdevice_notifier(&irda_dev_notifier);
 
         irda_init();
-#ifdef MODULE
- irda_device_init(); /* Called by init/main.c when non-modular */
-#endif
+ irda_device_init();
         return 0;
 }
 module_init(irda_proto_init);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Jun 07 2001 - 21:00:14 EST