2001-12-06 06:23:13

by Keith Owens

[permalink] [raw]
Subject: [patch] 2.4.16 for pointers to __devexit functions

This patch against 2.4.16 defines __devexit_p() for pointers to
functions defined as __devexit, the wrapper inserts the function name
or NULL, based on config options. It allows people to use the new
binutils on the kernel, there are some real kernel bugs that binutils
will find once this patch is in.

I have patched all the obvious references to __devexit functions,
leaving a few which appear to be real bugs. I notified the maintainers
of the buggy code privately.


Index: 16.1/Documentation/pci.txt
--- 16.1/Documentation/pci.txt Tue, 06 Nov 2001 12:07:56 +1100 kaos (linux-2.4/a/d/42_pci.txt 1.1.1.2.1.2 644)
+++ 16.1(w)/Documentation/pci.txt Thu, 06 Dec 2001 16:16:25 +1100 kaos (linux-2.4/a/d/42_pci.txt 1.1.1.2.1.2 644)
@@ -104,6 +104,10 @@ Tips:
If you are sure the driver is not a hotplug driver then use only
__init/exit __initdata/exitdata.

+ Pointers to functions marked as __devexit must be created using
+ __devexit_p(function_name). That will generate the function
+ name or NULL if the __devexit function will be discarded.
+

2. How to find PCI devices manually (the old style)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Index: 16.1/include/linux/init.h
--- 16.1/include/linux/init.h Mon, 30 Jul 2001 10:52:30 +1000 kaos (linux-2.4/f/b/11_init.h 1.1.1.1.1.2 644)
+++ 16.1(w)/include/linux/init.h Thu, 06 Dec 2001 17:11:02 +1100 kaos (linux-2.4/f/b/11_init.h 1.1.1.1.1.2 644)
@@ -111,7 +111,7 @@ extern struct kernel_param __setup_start
*/
#define module_exit(x) __exitcall(x);

-#else
+#else /* MODULE */

#define __init
#define __exit
@@ -141,7 +141,7 @@ typedef void (*__cleanup_module_func_t)(

#define __setup(str,func) /* nothing */

-#endif
+#endif /* !MODULE */

#ifdef CONFIG_HOTPLUG
#define __devinit
@@ -153,6 +153,18 @@ typedef void (*__cleanup_module_func_t)(
#define __devinitdata __initdata
#define __devexit __exit
#define __devexitdata __exitdata
+#endif
+
+/* Functions marked as __devexit may be discarded at kernel link time, depending
+ on config options. Newer versions of binutils detect references from
+ retained sections to discarded sections and flag an error. Pointers to
+ __devexit functions must use __devexit_p(function_name), the wrapper will
+ insert either the function_name or NULL, depending on the config options.
+ */
+#if defined(MODULE) || defined(CONFIG_HOTPLUG)
+#define __devexit_p(x) x
+#else
+#define __devexit_p(x) NULL
#endif

#endif /* _LINUX_INIT_H */
Index: 16.1/drivers/media/video/bttv-driver.c
--- 16.1/drivers/media/video/bttv-driver.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/t/b/47_bttv-drive 1.3.1.1.1.2.1.1.1.1.1.2 644)
+++ 16.1(w)/drivers/media/video/bttv-driver.c Thu, 06 Dec 2001 16:30:16 +1100 kaos (linux-2.4/t/b/47_bttv-drive 1.3.1.1.1.2.1.1.1.1.1.2 644)
@@ -3025,7 +3025,7 @@ static struct pci_driver bttv_pci_driver
name: "bttv",
id_table: bttv_pci_tbl,
probe: bttv_probe,
- remove: bttv_remove,
+ remove: __devexit_p(bttv_remove),
};

int bttv_init_module(void)
Index: 16.1/drivers/ieee1394/ohci1394.c
--- 16.1/drivers/ieee1394/ohci1394.c Thu, 04 Oct 2001 16:23:36 +1000 kaos (linux-2.4/v/b/2_ohci1394.c 1.1.1.1.1.3.1.3.1.2 644)
+++ 16.1(w)/drivers/ieee1394/ohci1394.c Thu, 06 Dec 2001 17:12:55 +1100 kaos (linux-2.4/v/b/2_ohci1394.c 1.1.1.1.1.3.1.3.1.2 644)
@@ -2423,7 +2423,7 @@ static struct pci_driver ohci1394_driver
name: OHCI1394_DRIVER_NAME,
id_table: ohci1394_pci_tbl,
probe: ohci1394_add_one,
- remove: ohci1394_remove_one,
+ remove: __devexit_p(ohci1394_remove_one),
};

static void __exit ohci1394_cleanup (void)
Index: 16.1/drivers/pcmcia/pci_socket.c
--- 16.1/drivers/pcmcia/pci_socket.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/v/b/38_pci_socket 1.1.1.3 644)
+++ 16.1(w)/drivers/pcmcia/pci_socket.c Thu, 06 Dec 2001 16:40:06 +1100 kaos (linux-2.4/v/b/38_pci_socket 1.1.1.3 644)
@@ -249,7 +249,7 @@ static struct pci_driver pci_cardbus_dri
name: "cardbus",
id_table: cardbus_table,
probe: cardbus_probe,
- remove: cardbus_remove,
+ remove: __devexit_p(cardbus_remove),
suspend: cardbus_suspend,
resume: cardbus_resume,
};
Index: 16.1/drivers/atm/firestream.c
--- 16.1/drivers/atm/firestream.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/w/b/32_firestream 1.2.1.5.1.1 644)
+++ 16.1(w)/drivers/atm/firestream.c Thu, 06 Dec 2001 16:18:40 +1100 kaos (linux-2.4/w/b/32_firestream 1.2.1.5.1.1 644)
@@ -2102,7 +2102,7 @@ static struct pci_driver firestream_driv
name: "firestream",
id_table: firestream_pci_tbl,
probe: firestream_init_one,
- remove: firestream_remove_one,
+ remove: __devexit_p(firestream_remove_one),
};

static int __init firestream_init_module (void)
Index: 16.1/drivers/atm/eni.c
--- 16.1/drivers/atm/eni.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/x/b/10_eni.c 1.1.1.1.1.2.1.1 644)
+++ 16.1(w)/drivers/atm/eni.c Thu, 06 Dec 2001 16:18:19 +1100 kaos (linux-2.4/x/b/10_eni.c 1.1.1.1.1.2.1.1 644)
@@ -2310,7 +2310,7 @@ static struct pci_driver eni_driver = {
name: DEV_LABEL,
id_table: eni_pci_tbl,
probe: eni_init_one,
- remove: eni_remove_one,
+ remove: __devexit_p(eni_remove_one),
};


Index: 16.1/drivers/usb/usb-uhci.c
--- 16.1/drivers/usb/usb-uhci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/z/b/2_usb-uhci.c 1.2.1.1.1.16 644)
+++ 16.1(w)/drivers/usb/usb-uhci.c Thu, 06 Dec 2001 16:43:12 +1100 kaos (linux-2.4/z/b/2_usb-uhci.c 1.2.1.1.1.16 644)
@@ -3070,7 +3070,7 @@ static struct pci_driver uhci_pci_driver
id_table: &uhci_pci_ids [0],

probe: uhci_pci_probe,
- remove: uhci_pci_remove,
+ remove: __devexit_p(uhci_pci_remove),

#ifdef CONFIG_PM
suspend: uhci_pci_suspend,
Index: 16.1/drivers/usb/uhci.c
--- 16.1/drivers/usb/uhci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/z/b/4_uhci.c 1.1.2.1.2.1.2.3.1.12 644)
+++ 16.1(w)/drivers/usb/uhci.c Thu, 06 Dec 2001 16:41:09 +1100 kaos (linux-2.4/z/b/4_uhci.c 1.1.2.1.2.1.2.3.1.12 644)
@@ -2990,7 +2990,7 @@ static struct pci_driver uhci_pci_driver
id_table: uhci_pci_ids,

probe: uhci_pci_probe,
- remove: uhci_pci_remove,
+ remove: __devexit_p(uhci_pci_remove),

#ifdef CONFIG_PM
suspend: uhci_pci_suspend,
Index: 16.1/drivers/usb/usb-ohci.c
--- 16.1/drivers/usb/usb-ohci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/z/b/28_usb-ohci.c 1.2.1.2.1.6.1.3.2.3.2.2 644)
+++ 16.1(w)/drivers/usb/usb-ohci.c Thu, 06 Dec 2001 16:40:58 +1100 kaos (linux-2.4/z/b/28_usb-ohci.c 1.2.1.2.1.6.1.3.2.3.2.2 644)
@@ -2860,7 +2860,7 @@ static struct pci_driver ohci_pci_driver
id_table: &ohci_pci_ids [0],

probe: ohci_pci_probe,
- remove: ohci_pci_remove,
+ remove: __devexit_p(ohci_pci_remove),

#ifdef CONFIG_PM
suspend: ohci_pci_suspend,
Index: 16.1/drivers/video/tdfxfb.c
--- 16.1/drivers/video/tdfxfb.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/C/b/37_tdfxfb.c 1.2.2.1.1.1.1.1.1.5 644)
+++ 16.1(w)/drivers/video/tdfxfb.c Thu, 06 Dec 2001 16:44:21 +1100 kaos (linux-2.4/C/b/37_tdfxfb.c 1.2.2.1.1.1.1.1.1.5 644)
@@ -495,7 +495,7 @@ static struct pci_driver tdfxfb_driver =
name: "tdfxfb",
id_table: tdfxfb_id_table,
probe: tdfxfb_probe,
- remove: tdfxfb_remove,
+ remove: __devexit_p(tdfxfb_remove),
};

MODULE_DEVICE_TABLE(pci, tdfxfb_id_table);
Index: 16.1/drivers/video/riva/fbdev.c
--- 16.1/drivers/video/riva/fbdev.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/C/b/45_fbdev.c 1.5.1.4 644)
+++ 16.1(w)/drivers/video/riva/fbdev.c Thu, 06 Dec 2001 16:43:24 +1100 kaos (linux-2.4/C/b/45_fbdev.c 1.5.1.4 644)
@@ -2082,7 +2082,7 @@ static struct pci_driver rivafb_driver =
name: "rivafb",
id_table: rivafb_pci_tbl,
probe: rivafb_init_one,
- remove: rivafb_remove_one,
+ remove: __devexit_p(rivafb_remove_one),
};


Index: 16.1/drivers/video/cyber2000fb.c
--- 16.1/drivers/video/cyber2000fb.c Fri, 26 Oct 2001 15:50:03 +1000 kaos (linux-2.4/D/b/3_cyber2000f 1.2.2.2.1.1.1.2.1.2 644)
+++ 16.1(w)/drivers/video/cyber2000fb.c Thu, 06 Dec 2001 16:43:34 +1100 kaos (linux-2.4/D/b/3_cyber2000f 1.2.2.2.1.1.1.2.1.2 644)
@@ -1683,7 +1683,7 @@ static struct pci_device_id cyberpro_pci
static struct pci_driver cyberpro_driver = {
name: "CyberPro",
probe: cyberpro_probe,
- remove: cyberpro_remove,
+ remove: __devexit_p(cyberpro_remove),
suspend: cyberpro_suspend,
resume: cyberpro_resume,
id_table: cyberpro_pci_table
Index: 16.1/drivers/video/imsttfb.c
--- 16.1/drivers/video/imsttfb.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/D/b/42_imsttfb.c 1.2.2.1.1.3.1.1.1.3 644)
+++ 16.1(w)/drivers/video/imsttfb.c Thu, 06 Dec 2001 16:43:51 +1100 kaos (linux-2.4/D/b/42_imsttfb.c 1.2.2.1.1.3.1.1.1.3 644)
@@ -1643,7 +1643,7 @@ static struct pci_driver imsttfb_pci_dri
name: "imsttfb",
id_table: imsttfb_pci_tbl,
probe: imsttfb_probe,
- remove: imsttfb_remove,
+ remove: __devexit_p(imsttfb_remove),
};

static struct fb_ops imsttfb_ops = {
Index: 16.1/drivers/sound/ymfpci.c
--- 16.1/drivers/sound/ymfpci.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/L/b/45_ymfpci.c 1.4.1.9.1.1.1.2.1.3 644)
+++ 16.1(w)/drivers/sound/ymfpci.c Thu, 06 Dec 2001 16:40:39 +1100 kaos (linux-2.4/L/b/45_ymfpci.c 1.4.1.9.1.1.1.2.1.3 644)
@@ -2547,7 +2547,7 @@ static struct pci_driver ymfpci_driver =
name: "ymfpci",
id_table: ymf_id_tbl,
probe: ymf_probe_one,
- remove: ymf_remove_one,
+ remove: __devexit_p(ymf_remove_one),
suspend: ymf_suspend,
resume: ymf_resume
};
Index: 16.1/drivers/sound/emu10k1/main.c
--- 16.1/drivers/sound/emu10k1/main.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/M/b/14_main.c 1.3.1.2.1.4 644)
+++ 16.1(w)/drivers/sound/emu10k1/main.c Thu, 06 Dec 2001 16:40:17 +1100 kaos (linux-2.4/M/b/14_main.c 1.3.1.2.1.4 644)
@@ -1127,7 +1127,7 @@ static struct pci_driver emu10k1_pci_dri
name: "emu10k1",
id_table: emu10k1_pci_tbl,
probe: emu10k1_probe,
- remove: emu10k1_remove,
+ remove: __devexit_p(emu10k1_remove),
};

static int __init emu10k1_init_module(void)
Index: 16.1/drivers/char/joystick/pcigame.c
--- 16.1/drivers/char/joystick/pcigame.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/Y/b/30_pcigame.c 1.1.1.2 644)
+++ 16.1(w)/drivers/char/joystick/pcigame.c Thu, 06 Dec 2001 16:20:46 +1100 kaos (linux-2.4/Y/b/30_pcigame.c 1.1.1.2 644)
@@ -180,7 +180,7 @@ static struct pci_driver pcigame_driver
name: "pcigame",
id_table: pcigame_id_table,
probe: pcigame_probe,
- remove: pcigame_remove,
+ remove: __devexit_p(pcigame_remove),
};

int __init pcigame_init(void)
Index: 16.1/drivers/char/serial.c
--- 16.1/drivers/char/serial.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/b/c/22_serial.c 1.1.3.2.2.3.2.2.1.8.1.1 644)
+++ 16.1(w)/drivers/char/serial.c Thu, 06 Dec 2001 16:20:59 +1100 kaos (linux-2.4/b/c/22_serial.c 1.1.3.2.2.3.2.2.1.8.1.1 644)
@@ -4896,7 +4896,7 @@ MODULE_DEVICE_TABLE(pci, serial_pci_tbl)
static struct pci_driver serial_pci_driver = {
name: "serial",
probe: serial_init_one,
- remove: serial_remove_one,
+ remove: __devexit_p(serial_remove_one),
id_table: serial_pci_tbl,
};

Index: 16.1/drivers/block/cciss.c
--- 16.1/drivers/block/cciss.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/c/c/34_cciss.c 1.4.2.3.1.2.1.9 644)
+++ 16.1(w)/drivers/block/cciss.c Thu, 06 Dec 2001 16:19:09 +1100 kaos (linux-2.4/c/c/34_cciss.c 1.4.2.3.1.2.1.9 644)
@@ -2019,7 +2019,7 @@ static void __devexit cciss_remove_one (
static struct pci_driver cciss_pci_driver = {
name: "cciss",
probe: cciss_init_one,
- remove: cciss_remove_one,
+ remove: __devexit_p(cciss_remove_one),
id_table: cciss_pci_device_id, /* id_table */
};

Index: 16.1/drivers/net/winbond-840.c
--- 16.1/drivers/net/winbond-840.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/c/c/43_winbond-84 1.2.1.4.1.2.1.7 644)
+++ 16.1(w)/drivers/net/winbond-840.c Thu, 06 Dec 2001 16:38:34 +1100 kaos (linux-2.4/c/c/43_winbond-84 1.2.1.4.1.2.1.7 644)
@@ -1697,7 +1697,7 @@ static struct pci_driver w840_driver = {
name: DRV_NAME,
id_table: w840_pci_tbl,
probe: w840_probe1,
- remove: w840_remove1,
+ remove: __devexit_p(w840_remove1),
#ifdef CONFIG_PM
suspend: w840_suspend,
resume: w840_resume,
Index: 16.1/drivers/net/sundance.c
--- 16.1/drivers/net/sundance.c Tue, 23 Oct 2001 14:35:33 +1000 kaos (linux-2.4/c/c/44_sundance.c 1.2.1.10.1.2 644)
+++ 16.1(w)/drivers/net/sundance.c Thu, 06 Dec 2001 16:38:48 +1100 kaos (linux-2.4/c/c/44_sundance.c 1.2.1.10.1.2 644)
@@ -1474,7 +1474,7 @@ static struct pci_driver sundance_driver
name: DRV_NAME,
id_table: sundance_pci_tbl,
probe: sundance_probe1,
- remove: sundance_remove1,
+ remove: __devexit_p(sundance_remove1),
};

static int __init sundance_init(void)
Index: 16.1/drivers/net/natsemi.c
--- 16.1/drivers/net/natsemi.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/c/c/45_natsemi.c 1.3.1.8.1.1.1.6 644)
+++ 16.1(w)/drivers/net/natsemi.c Thu, 06 Dec 2001 16:37:32 +1100 kaos (linux-2.4/c/c/45_natsemi.c 1.3.1.8.1.1.1.6 644)
@@ -2518,7 +2518,7 @@ static struct pci_driver natsemi_driver
name: DRV_NAME,
id_table: natsemi_pci_tbl,
probe: natsemi_probe1,
- remove: natsemi_remove1,
+ remove: __devexit_p(natsemi_remove1),
#ifdef CONFIG_PM
suspend: natsemi_suspend,
resume: natsemi_resume,
Index: 16.1/drivers/net/pcmcia/xircom_tulip_cb.c
--- 16.1/drivers/net/pcmcia/xircom_tulip_cb.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/d/c/16_xircom_tul 1.4.1.8 644)
+++ 16.1(w)/drivers/net/pcmcia/xircom_tulip_cb.c Thu, 06 Dec 2001 16:32:03 +1100 kaos (linux-2.4/d/c/16_xircom_tul 1.4.1.8 644)
@@ -1748,7 +1748,7 @@ static struct pci_driver xircom_driver =
name: DRV_NAME,
id_table: xircom_pci_table,
probe: xircom_init_one,
- remove: xircom_remove_one,
+ remove: __devexit_p(xircom_remove_one),
#ifdef CONFIG_PM
suspend: xircom_suspend,
resume: xircom_resume
Index: 16.1/drivers/net/ioc3-eth.c
--- 16.1/drivers/net/ioc3-eth.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/d/c/49_ioc3-eth.c 1.1.2.1.1.3.1.2.1.2 644)
+++ 16.1(w)/drivers/net/ioc3-eth.c Thu, 06 Dec 2001 16:36:43 +1100 kaos (linux-2.4/d/c/49_ioc3-eth.c 1.1.2.1.1.3.1.2.1.2 644)
@@ -1515,7 +1515,7 @@ static struct pci_driver ioc3_driver = {
name: "ioc3-eth",
id_table: ioc3_pci_tbl,
probe: ioc3_probe,
- remove: ioc3_remove_one,
+ remove: __devexit_p(ioc3_remove_one),
};

static int __init ioc3_init_module(void)
Index: 16.1/drivers/net/tulip/tulip_core.c
--- 16.1/drivers/net/tulip/tulip_core.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/e/c/6_tulip_core 1.1.1.1.1.1.2.3.1.3.1.12 644)
+++ 16.1(w)/drivers/net/tulip/tulip_core.c Thu, 06 Dec 2001 16:33:01 +1100 kaos (linux-2.4/e/c/6_tulip_core 1.1.1.1.1.1.2.3.1.3.1.12 644)
@@ -1889,7 +1889,7 @@ static struct pci_driver tulip_driver =
name: DRV_NAME,
id_table: tulip_pci_tbl,
probe: tulip_init_one,
- remove: tulip_remove_one,
+ remove: __devexit_p(tulip_remove_one),
#ifdef CONFIG_PM
suspend: tulip_suspend,
resume: tulip_resume,
Index: 16.1/drivers/net/8139too.c
--- 16.1/drivers/net/8139too.c Tue, 27 Nov 2001 11:15:00 +1100 kaos (linux-2.4/f/c/30_8139too.c 1.2.1.5.1.1.1.5.1.7 644)
+++ 16.1(w)/drivers/net/8139too.c Thu, 06 Dec 2001 16:34:18 +1100 kaos (linux-2.4/f/c/30_8139too.c 1.2.1.5.1.1.1.5.1.7 644)
@@ -2493,7 +2493,7 @@ static struct pci_driver rtl8139_pci_dri
name: DRV_NAME,
id_table: rtl8139_pci_tbl,
probe: rtl8139_init_one,
- remove: rtl8139_remove_one,
+ remove: __devexit_p(rtl8139_remove_one),
#ifdef CONFIG_PM
suspend: rtl8139_suspend,
resume: rtl8139_resume,
Index: 16.1/drivers/net/ne2k-pci.c
--- 16.1/drivers/net/ne2k-pci.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/f/c/42_ne2k-pci.c 1.3.1.1.1.1.1.1 644)
+++ 16.1(w)/drivers/net/ne2k-pci.c Thu, 06 Dec 2001 16:37:42 +1100 kaos (linux-2.4/f/c/42_ne2k-pci.c 1.3.1.1.1.1.1.1 644)
@@ -642,7 +642,7 @@ static void __devexit ne2k_pci_remove_on
static struct pci_driver ne2k_driver = {
name: DRV_NAME,
probe: ne2k_pci_init_one,
- remove: ne2k_pci_remove_one,
+ remove: __devexit_p(ne2k_pci_remove_one),
id_table: ne2k_pci_tbl,
};

Index: 16.1/drivers/net/epic100.c
--- 16.1/drivers/net/epic100.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/f/c/43_epic100.c 1.2.1.4.1.2.1.2.1.3 644)
+++ 16.1(w)/drivers/net/epic100.c Thu, 06 Dec 2001 16:36:13 +1100 kaos (linux-2.4/f/c/43_epic100.c 1.2.1.4.1.2.1.2.1.3 644)
@@ -1507,7 +1507,7 @@ static struct pci_driver epic_driver = {
name: DRV_NAME,
id_table: epic_pci_tbl,
probe: epic_init_one,
- remove: epic_remove_one,
+ remove: __devexit_p(epic_remove_one),
#ifdef CONFIG_PM
suspend: epic_suspend,
resume: epic_resume,
Index: 16.1/drivers/net/arcnet/com20020-pci.c
--- 16.1/drivers/net/arcnet/com20020-pci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/h/c/3_com20020-p 1.2.1.1.1.3 644)
+++ 16.1(w)/drivers/net/arcnet/com20020-pci.c Thu, 06 Dec 2001 16:30:57 +1100 kaos (linux-2.4/h/c/3_com20020-p 1.2.1.1.1.3 644)
@@ -160,7 +160,7 @@ static struct pci_driver com20020pci_dri
name: "com20020",
id_table: com20020pci_id_table,
probe: com20020pci_probe,
- remove: com20020pci_remove
+ remove: __devexit_p(com20020pci_remove),
};

static int __init com20020pci_init(void)
Index: 16.1/drivers/net/sis900.c
--- 16.1/drivers/net/sis900.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/h/c/13_sis900.c 1.3.1.11.1.3 644)
+++ 16.1(w)/drivers/net/sis900.c Thu, 06 Dec 2001 16:38:10 +1100 kaos (linux-2.4/h/c/13_sis900.c 1.3.1.11.1.3 644)
@@ -2098,7 +2098,7 @@ static struct pci_driver sis900_pci_driv
name: SIS900_MODULE_NAME,
id_table: sis900_pci_tbl,
probe: sis900_probe,
- remove: sis900_remove,
+ remove: __devexit_p(sis900_remove),
};

static int __init sis900_init_module(void)
Index: 16.1/drivers/net/yellowfin.c
--- 16.1/drivers/net/yellowfin.c Tue, 23 Oct 2001 14:35:33 +1000 kaos (linux-2.4/h/c/17_yellowfin. 1.1.1.3.1.8.1.1 644)
+++ 16.1(w)/drivers/net/yellowfin.c Thu, 06 Dec 2001 16:39:33 +1100 kaos (linux-2.4/h/c/17_yellowfin. 1.1.1.3.1.8.1.1 644)
@@ -1506,7 +1506,7 @@ static struct pci_driver yellowfin_drive
name: DRV_NAME,
id_table: yellowfin_pci_tbl,
probe: yellowfin_init_one,
- remove: yellowfin_remove_one,
+ remove: __devexit_p(yellowfin_remove_one),
};


Index: 16.1/drivers/net/via-rhine.c
--- 16.1/drivers/net/via-rhine.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/h/c/19_via-rhine. 1.1.1.4.1.2.1.3.1.2.1.1.1.1 644)
+++ 16.1(w)/drivers/net/via-rhine.c Thu, 06 Dec 2001 16:39:20 +1100 kaos (linux-2.4/h/c/19_via-rhine. 1.1.1.4.1.2.1.3.1.2.1.1.1.1 644)
@@ -1667,7 +1667,7 @@ static struct pci_driver via_rhine_drive
name: "via-rhine",
id_table: via_rhine_pci_tbl,
probe: via_rhine_init_one,
- remove: via_rhine_remove_one,
+ remove: __devexit_p(via_rhine_remove_one),
};


Index: 16.1/drivers/net/starfire.c
--- 16.1/drivers/net/starfire.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/h/c/22_starfire.c 1.1.1.9.1.3 644)
+++ 16.1(w)/drivers/net/starfire.c Thu, 06 Dec 2001 16:38:22 +1100 kaos (linux-2.4/h/c/22_starfire.c 1.1.1.9.1.3 644)
@@ -1963,7 +1963,7 @@ static void __devexit starfire_remove_on
static struct pci_driver starfire_driver = {
name: DRV_NAME,
probe: starfire_init_one,
- remove: starfire_remove_one,
+ remove: __devexit_p(starfire_remove_one),
id_table: starfire_pci_tbl,
};

Index: 16.1/drivers/net/eepro100.c
--- 16.1/drivers/net/eepro100.c Tue, 13 Nov 2001 08:45:38 +1100 kaos (linux-2.4/h/c/27_eepro100.c 1.1.1.1.1.2.6.4.2.4 644)
+++ 16.1(w)/drivers/net/eepro100.c Thu, 06 Dec 2001 16:36:00 +1100 kaos (linux-2.4/h/c/27_eepro100.c 1.1.1.1.1.2.6.4.2.4 644)
@@ -2281,7 +2281,7 @@ static struct pci_driver eepro100_driver
name: "eepro100",
id_table: eepro100_pci_tbl,
probe: eepro100_init_one,
- remove: eepro100_remove_one,
+ remove: __devexit_p(eepro100_remove_one),
#ifdef CONFIG_PM
suspend: eepro100_suspend,
resume: eepro100_resume,
Index: 16.1/drivers/net/defxx.c
--- 16.1/drivers/net/defxx.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/h/c/40_defxx.c 1.2.1.4.1.3.1.1 644)
+++ 16.1(w)/drivers/net/defxx.c Thu, 06 Dec 2001 16:35:16 +1100 kaos (linux-2.4/h/c/40_defxx.c 1.2.1.4.1.3.1.1 644)
@@ -3360,7 +3360,7 @@ MODULE_DEVICE_TABLE(pci, dfx_pci_tbl);
static struct pci_driver dfx_driver = {
name: "defxx",
probe: dfx_init_one,
- remove: dfx_remove_one,
+ remove: __devexit_p(dfx_remove_one),
id_table: dfx_pci_tbl,
};

Index: 16.1/drivers/net/tokenring/lanstreamer.c
--- 16.1/drivers/net/tokenring/lanstreamer.c Mon, 12 Nov 2001 11:34:37 +1100 kaos (linux-2.4/i/c/46_lanstreame 1.3.1.1.1.2.1.3 644)
+++ 16.1(w)/drivers/net/tokenring/lanstreamer.c Thu, 06 Dec 2001 16:32:35 +1100 kaos (linux-2.4/i/c/46_lanstreame 1.3.1.1.1.2.1.3 644)
@@ -1812,7 +1812,7 @@ static struct pci_driver streamer_pci_dr
name: "lanstreamer",
id_table: streamer_pci_tbl,
probe: streamer_init_one,
- remove: streamer_remove_one,
+ remove: __devexit_p(streamer_remove_one),
};

static int __init streamer_init_module(void) {
Index: 16.1/drivers/net/tokenring/olympic.c
--- 16.1/drivers/net/tokenring/olympic.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/j/c/7_olympic.c 1.2.1.2.1.2.1.1.1.1.1.1 644)
+++ 16.1(w)/drivers/net/tokenring/olympic.c Thu, 06 Dec 2001 16:32:48 +1100 kaos (linux-2.4/j/c/7_olympic.c 1.2.1.2.1.2.1.1.1.1.1.1 644)
@@ -1705,7 +1705,7 @@ static struct pci_driver olympic_driver
name: "olympic",
id_table: olympic_pci_tbl,
probe: olympic_probe,
- remove: olympic_remove_one
+ remove: __devexit_p(olympic_remove_one),
};

static int __init olympic_pci_init(void)
Index: 16.1/drivers/net/3c59x.c
--- 16.1/drivers/net/3c59x.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/j/c/16_3c59x.c 1.3.1.8 644)
+++ 16.1(w)/drivers/net/3c59x.c Thu, 06 Dec 2001 16:34:31 +1100 kaos (linux-2.4/j/c/16_3c59x.c 1.3.1.8 644)
@@ -2919,7 +2919,7 @@ static void __devexit vortex_remove_one
static struct pci_driver vortex_driver = {
name: "3c59x",
probe: vortex_init_one,
- remove: vortex_remove_one,
+ remove: __devexit_p(vortex_remove_one),
id_table: vortex_pci_tbl,
#ifdef CONFIG_PM
suspend: vortex_suspend,
Index: 16.1/drivers/net/tlan.c
--- 16.1/drivers/net/tlan.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/l/c/11_tlan.c 1.1.1.2.1.3.1.1 644)
+++ 16.1(w)/drivers/net/tlan.c Thu, 06 Dec 2001 16:39:11 +1100 kaos (linux-2.4/l/c/11_tlan.c 1.1.1.2.1.3.1.1 644)
@@ -430,7 +430,7 @@ static struct pci_driver tlan_driver = {
name: "tlan",
id_table: tlan_pci_tbl,
probe: tlan_init_one,
- remove: tlan_remove_one,
+ remove: __devexit_p(tlan_remove_one),
};

static int __init tlan_probe(void)
Index: 16.1/drivers/net/pci-skeleton.c
--- 16.1/drivers/net/pci-skeleton.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/q/d/47_pci-skelet 1.1.1.7.1.4 644)
+++ 16.1(w)/drivers/net/pci-skeleton.c Thu, 06 Dec 2001 16:37:20 +1100 kaos (linux-2.4/q/d/47_pci-skelet 1.1.1.7.1.4 644)
@@ -1980,7 +1980,7 @@ static struct pci_driver netdrv_pci_driv
name: MODNAME,
id_table: netdrv_pci_tbl,
probe: netdrv_init_one,
- remove: netdrv_remove_one,
+ remove: __devexit_p(netdrv_remove_one),
#ifdef CONFIG_PM
suspend: netdrv_suspend,
resume: netdrv_resume,
Index: 16.1/drivers/media/radio/radio-maxiradio.c
--- 16.1/drivers/media/radio/radio-maxiradio.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/x/d/25_radio-maxi 1.1.1.1.1.1 644)
+++ 16.1(w)/drivers/media/radio/radio-maxiradio.c Thu, 06 Dec 2001 16:27:50 +1100 kaos (linux-2.4/x/d/25_radio-maxi 1.1.1.1.1.1 644)
@@ -376,7 +376,7 @@ static struct pci_driver maxiradio_drive
name: "radio-maxiradio",
id_table: maxiradio_pci_tbl,
probe: maxiradio_init_one,
- remove: maxiradio_remove_one,
+ remove: __devexit_p(maxiradio_remove_one),
};

int __init maxiradio_radio_init(void)
Index: 16.1/drivers/net/sungem.c
--- 16.1/drivers/net/sungem.c Tue, 23 Oct 2001 14:35:33 +1000 kaos (linux-2.4/E/d/26_sungem.c 1.6.1.6 644)
+++ 16.1(w)/drivers/net/sungem.c Thu, 06 Dec 2001 16:38:58 +1100 kaos (linux-2.4/E/d/26_sungem.c 1.6.1.6 644)
@@ -2140,7 +2140,7 @@ static struct pci_driver gem_driver = {
name: GEM_MODULE_NAME,
id_table: gem_pci_tbl,
probe: gem_init_one,
- remove: gem_remove_one,
+ remove: __devexit_p(gem_remove_one),
};

static int __init gem_init(void)
Index: 16.1/drivers/char/joystick/cs461x.c
--- 16.1/drivers/char/joystick/cs461x.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/K/d/4_cs461x.c 1.1.1.2 644)
+++ 16.1(w)/drivers/char/joystick/cs461x.c Thu, 06 Dec 2001 16:19:42 +1100 kaos (linux-2.4/K/d/4_cs461x.c 1.1.1.2 644)
@@ -313,7 +313,7 @@ static struct pci_driver cs461x_pci_driv
name: "PCI Gameport",
id_table: cs461x_pci_tbl,
probe: cs461x_pci_probe,
- remove: cs461x_pci_remove,
+ remove: __devexit_p(cs461x_pci_remove),
};

int __init js_cs461x_init(void)
Index: 16.1/drivers/net/fealnx.c
--- 16.1/drivers/net/fealnx.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/i/e/0_fealnx.c 1.2.1.7 644)
+++ 16.1(w)/drivers/net/fealnx.c Thu, 06 Dec 2001 16:36:32 +1100 kaos (linux-2.4/i/e/0_fealnx.c 1.2.1.7 644)
@@ -1858,7 +1858,7 @@ static struct pci_driver fealnx_driver =
name: "fealnx",
id_table: fealnx_pci_tbl,
probe: fealnx_init_one,
- remove: fealnx_remove_one,
+ remove: __devexit_p(fealnx_remove_one),
};

static int __init fealnx_init(void)
Index: 16.1/drivers/net/wireless/airo.c
--- 16.1/drivers/net/wireless/airo.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/w/e/24_airo.c 1.2.1.8 644)
+++ 16.1(w)/drivers/net/wireless/airo.c Thu, 06 Dec 2001 16:34:04 +1100 kaos (linux-2.4/w/e/24_airo.c 1.2.1.8 644)
@@ -64,7 +64,7 @@ static struct pci_driver airo_driver = {
name: "airo",
id_table: card_ids,
probe: airo_pci_probe,
- remove: airo_pci_remove,
+ remove: __devexit_p(airo_pci_remove),
};
#endif /* CONFIG_PCI */

Index: 16.1/drivers/isdn/tpam/tpam_main.c
--- 16.1/drivers/isdn/tpam/tpam_main.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/D/e/29_tpam_main. 1.1.1.1.1.1 644)
+++ 16.1(w)/drivers/isdn/tpam/tpam_main.c Thu, 06 Dec 2001 16:27:11 +1100 kaos (linux-2.4/D/e/29_tpam_main. 1.1.1.1.1.1 644)
@@ -254,7 +254,7 @@ static struct pci_driver tpam_driver = {
name: "tpam",
id_table: tpam_pci_tbl,
probe: tpam_probe,
- remove: tpam_remove,
+ remove: __devexit_p(tpam_remove),
};

static int __init tpam_init(void) {
Index: 16.1/drivers/media/video/meye.c
--- 16.1/drivers/media/video/meye.c Fri, 26 Oct 2001 15:50:03 +1000 kaos (linux-2.4/G/e/0_meye.c 1.2.1.1.1.1 644)
+++ 16.1(w)/drivers/media/video/meye.c Thu, 06 Dec 2001 16:30:30 +1100 kaos (linux-2.4/G/e/0_meye.c 1.2.1.1.1.1 644)
@@ -1460,7 +1460,7 @@ static struct pci_driver meye_driver = {
name: "meye",
id_table: meye_pci_tbl,
probe: meye_probe,
- remove: meye_remove,
+ remove: __devexit_p(meye_remove),
};

static int __init meye_init_module(void) {
Index: 16.1/drivers/net/dl2k.c
--- 16.1/drivers/net/dl2k.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/G/e/43_dl2k.c 1.6 644)
+++ 16.1(w)/drivers/net/dl2k.c Thu, 06 Dec 2001 16:35:35 +1100 kaos (linux-2.4/G/e/43_dl2k.c 1.6 644)
@@ -1671,7 +1671,7 @@ static struct pci_driver rio_driver = {
name:"dl2k",
id_table:rio_pci_tbl,
probe:rio_probe1,
- remove:rio_remove1,
+ remove:__devexit_p(rio_remove1),
};

static int __init
Index: 16.1/drivers/parport/parport_serial.c
--- 16.1/drivers/parport/parport_serial.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/G/e/47_parport_se 1.5 644)
+++ 16.1(w)/drivers/parport/parport_serial.c Thu, 06 Dec 2001 16:39:45 +1100 kaos (linux-2.4/G/e/47_parport_se 1.5 644)
@@ -331,7 +331,7 @@ static struct pci_driver parport_serial_
name: "parport_serial",
id_table: parport_serial_pci_tbl,
probe: parport_serial_pci_probe,
- remove: parport_serial_pci_remove,
+ remove: __devexit_p(parport_serial_pci_remove),
};


Index: 16.1/drivers/media/radio/radio-gemtek-pci.c
--- 16.1/drivers/media/radio/radio-gemtek-pci.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/L/e/51_radio-gemt 1.1.1.1 644)
+++ 16.1(w)/drivers/media/radio/radio-gemtek-pci.c Thu, 06 Dec 2001 16:27:38 +1100 kaos (linux-2.4/L/e/51_radio-gemt 1.1.1.1 644)
@@ -424,7 +424,7 @@ static struct pci_driver gemtek_pci_driv
name: "gemtek_pci",
id_table: gemtek_pci_id,
probe: gemtek_pci_probe,
- remove: gemtek_pci_remove
+ remove: __devexit_p(gemtek_pci_remove),
};

static int __init gemtek_pci_init_module( void )
Index: 16.1/drivers/sound/btaudio.c
--- 16.1/drivers/sound/btaudio.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/Q/e/39_btaudio.c 1.4.1.1 644)
+++ 16.1(w)/drivers/sound/btaudio.c Thu, 06 Dec 2001 16:40:28 +1100 kaos (linux-2.4/Q/e/39_btaudio.c 1.4.1.1 644)
@@ -1030,7 +1030,7 @@ static struct pci_driver btaudio_pci_dri
name: "btaudio",
id_table: btaudio_pci_tbl,
probe: btaudio_probe,
- remove: btaudio_remove,
+ remove: __devexit_p(btaudio_remove),
};

int btaudio_init_module(void)
Index: 16.1/drivers/net/wan/farsync.c
--- 16.1/drivers/net/wan/farsync.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/Q/e/42_farsync.c 1.1.1.2.1.1 644)
+++ 16.1(w)/drivers/net/wan/farsync.c Thu, 06 Dec 2001 16:33:16 +1100 kaos (linux-2.4/Q/e/42_farsync.c 1.1.1.2.1.1 644)
@@ -1810,7 +1810,7 @@ static struct pci_driver fst_driver = {
name: FST_NAME,
id_table: fst_pci_dev_id,
probe: fst_add_one,
- remove: fst_remove_one,
+ remove: __devexit_p(fst_remove_one),
suspend: NULL,
resume: NULL,
};
Index: 16.1/drivers/net/irda/vlsi_ir.c
--- 16.1/drivers/net/irda/vlsi_ir.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/Q/e/43_vlsi_ir.c 1.6 644)
+++ 16.1(w)/drivers/net/irda/vlsi_ir.c Thu, 06 Dec 2001 16:31:41 +1100 kaos (linux-2.4/Q/e/43_vlsi_ir.c 1.6 644)
@@ -1291,7 +1291,7 @@ static struct pci_driver vlsi_irda_drive
name: drivername,
id_table: vlsi_irda_table,
probe: vlsi_irda_probe,
- remove: vlsi_irda_remove,
+ remove: __devexit_p(vlsi_irda_remove),
suspend: vlsi_irda_suspend,
resume: vlsi_irda_resume,
};
Index: 16.1/drivers/video/radeonfb.c
--- 16.1/drivers/video/radeonfb.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/i/f/9_radeonfb.c 1.6 644)
+++ 16.1(w)/drivers/video/radeonfb.c Thu, 06 Dec 2001 16:44:08 +1100 kaos (linux-2.4/i/f/9_radeonfb.c 1.6 644)
@@ -619,7 +619,7 @@ static struct pci_driver radeonfb_driver
name: "radeonfb",
id_table: radeonfb_pci_table,
probe: radeonfb_pci_register,
- remove: radeonfb_pci_unregister,
+ remove: __devexit_p(radeonfb_pci_unregister),
};


Index: 16.1/drivers/isdn/hisax/st5481_init.c
--- 16.1/drivers/isdn/hisax/st5481_init.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/l/f/11_st5481_ini 1.2 644)
+++ 16.1(w)/drivers/isdn/hisax/st5481_init.c Thu, 06 Dec 2001 16:25:59 +1100 kaos (linux-2.4/l/f/11_st5481_ini 1.2 644)
@@ -178,7 +178,7 @@ MODULE_DEVICE_TABLE (usb, st5481_ids);
static struct usb_driver st5481_usb_driver = {
name: "st5481_usb",
probe: probe_st5481,
- disconnect: disconnect_st5481,
+ disconnect: __devexit_p(disconnect_st5481),
id_table: st5481_ids,
};

Index: 16.1/drivers/net/ns83820.c
--- 16.1/drivers/net/ns83820.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/l/f/32_ns83820.c 1.6 644)
+++ 16.1(w)/drivers/net/ns83820.c Thu, 06 Dec 2001 16:37:57 +1100 kaos (linux-2.4/l/f/32_ns83820.c 1.6 644)
@@ -1455,7 +1455,7 @@ static struct pci_driver driver = {
name: "ns83820",
id_table: ns83820_pci_tbl,
probe: ns83820_init_one,
- remove: ns83820_remove_one,
+ remove: __devexit_p(ns83820_remove_one),
#if 0 /* FIXME: implement */
suspend: ,
resume: ,
Index: 16.1/drivers/char/joystick/emu10k1-gp.c
--- 16.1/drivers/char/joystick/emu10k1-gp.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/m/f/32_emu10k1-gp 1.2 644)
+++ 16.1(w)/drivers/char/joystick/emu10k1-gp.c Thu, 06 Dec 2001 16:20:28 +1100 kaos (linux-2.4/m/f/32_emu10k1-gp 1.2 644)
@@ -108,7 +108,7 @@ static struct pci_driver emu_driver = {
name: "Emu10k1 Gameport",
id_table: emu_tbl,
probe: emu_probe,
- remove: emu_remove,
+ remove: __devexit_p(emu_remove),
};

int __init emu_init(void)
Index: 16.1/drivers/net/pcmcia/xircom_cb.c
--- 16.1/drivers/net/pcmcia/xircom_cb.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/o/f/25_xircom_cb. 1.3 644)
+++ 16.1(w)/drivers/net/pcmcia/xircom_cb.c Thu, 06 Dec 2001 16:32:21 +1100 kaos (linux-2.4/o/f/25_xircom_cb. 1.3 644)
@@ -170,7 +170,7 @@ static struct pci_driver xircom_ops = {
name: "xircom_cb",
id_table: xircom_pci_table,
probe: xircom_probe,
- remove: xircom_remove,
+ remove: __devexit_p(xircom_remove),
};


Index: 16.1/drivers/net/wireless/orinoco_plx.c
--- 16.1/drivers/net/wireless/orinoco_plx.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/r/f/46_orinoco_pl 1.1 644)
+++ 16.1(w)/drivers/net/wireless/orinoco_plx.c Thu, 06 Dec 2001 16:33:46 +1100 kaos (linux-2.4/r/f/46_orinoco_pl 1.1 644)
@@ -279,7 +279,7 @@ static struct pci_driver orinoco_plx_dri
name:"orinoco_plx",
id_table:orinoco_plx_pci_id_table,
probe:orinoco_plx_init_one,
- remove:orinoco_plx_remove_one,
+ remove:__devexit_p(orinoco_plx_remove_one),
suspend:0,
resume:0
};
Index: 16.1/drivers/net/8139cp.c
--- 16.1/drivers/net/8139cp.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/D/f/10_8139cp.c 1.3 644)
+++ 16.1(w)/drivers/net/8139cp.c Thu, 06 Dec 2001 16:34:44 +1100 kaos (linux-2.4/D/f/10_8139cp.c 1.3 644)
@@ -1313,7 +1313,7 @@ static struct pci_driver cp_driver = {
name: DRV_NAME,
id_table: cp_pci_tbl,
probe: cp_init_one,
- remove: cp_remove_one,
+ remove: __devexit_p(cp_remove_one),
};

static int __init cp_init (void)


2001-12-06 08:10:06

by Jeff Garzik

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions

> This patch against 2.4.16 defines __devexit_p() for pointers to
> functions defined as __devexit, the wrapper inserts the function name
> or NULL, based on config options. It allows people to use the new
> binutils on the kernel, there are some real kernel bugs that binutils
> will find once this patch is in.
>
> I have patched all the obvious references to __devexit functions,
> leaving a few which appear to be real bugs. I notified the maintainers
> of the buggy code privately.

Why not __attribute__((weak)) ?

--
Jeff Garzik | Only so many songs can be sung
Building 1024 | with two lips, two lungs, and one tongue.
MandrakeSoft | - nomeansno

2001-12-06 08:14:56

by David Miller

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions

From: Jeff Garzik <[email protected]>
Date: Thu, 06 Dec 2001 03:09:46 -0500

Why not __attribute__((weak)) ?

This doesn't work on all platforms unfortunately :(

2001-12-06 09:40:55

by David Woodhouse

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions


[email protected] said:
> > Why not __attribute__((weak)) ?
> This doesn't work on all platforms unfortunately :(

Doesn't work at all, or just doesn't work with the (current) minimum
recommended compiler? We have to increase those minima at some point.

--
dwmw2


2001-12-06 09:41:55

by Jeff Garzik

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions

David Woodhouse wrote:
>
> [email protected] said:
> > > Why not __attribute__((weak)) ?
> > This doesn't work on all platforms unfortunately :(
>
> Doesn't work at all, or just doesn't work with the (current) minimum
> recommended compiler? We have to increase those minima at some point.

akpm and others will yell :)

egcs-1.1.2 compiles an x86 kernel far faster than newer compilers...

Jeff


--
Jeff Garzik | Only so many songs can be sung
Building 1024 | with two lips, two lungs, and one tongue.
MandrakeSoft | - nomeansno

2001-12-06 09:51:25

by Jakub Jelinek

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions

On Thu, Dec 06, 2001 at 09:40:19AM +0000, David Woodhouse wrote:
>
> [email protected] said:
> > > Why not __attribute__((weak)) ?
> > This doesn't work on all platforms unfortunately :(
>
> Doesn't work at all, or just doesn't work with the (current) minimum
> recommended compiler? We have to increase those minima at some point.

Actually, I think all GCCs will error on it, or at least should.
Most of the __devexit routines are static, you get something like:
test.c:2: weak declaration of `foo' must be public

It is very weird thing to have a non-public weak, and assemblers will do
weird things if you tweak it in assembly output.

Jakub

2001-12-06 09:55:15

by Keith Owens

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions

On Thu, 06 Dec 2001 03:09:46 -0500,
Jeff Garzik <[email protected]> wrote:
>> This patch against 2.4.16 defines __devexit_p() for pointers to
>> functions defined as __devexit, the wrapper inserts the function name
>> or NULL, based on config options. It allows people to use the new
>> binutils on the kernel, there are some real kernel bugs that binutils
>> will find once this patch is in.
>>
>> I have patched all the obvious references to __devexit functions,
>> leaving a few which appear to be real bugs. I notified the maintainers
>> of the buggy code privately.
>
>Why not __attribute__((weak)) ?

Because there are some real bugs in the kernel where code incorrectly
calls routines marked __devexit, a global conversion of __devexit
functions to NULL or weak will hide the bugs as well as the good code.
Most of the bugs are on error paths, typically an init routine calling
the exit code on error. Changing to BUG() does not help either, that
only shows up the buggy code in the unlikely event of a device error.

Using __devexit_p() will automatically remove the references that
should not exist, the new binutils can then catch the other buggy code
at link time.

2001-12-06 10:16:15

by David Miller

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions

From: David Woodhouse <[email protected]>
Date: Thu, 06 Dec 2001 09:40:19 +0000

Doesn't work at all, or just doesn't work with the (current) minimum
recommended compiler? We have to increase those minima at some point.

The "golden" sparc64 compiler has been in use for years and is what
has the weak problem, and updating it would be a major pain in the
butt.

2001-12-06 10:15:35

by Alan

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions

> > Doesn't work at all, or just doesn't work with the (current) minimum
> > recommended compiler? We have to increase those minima at some point.
>
> akpm and others will yell :)
> egcs-1.1.2 compiles an x86 kernel far faster than newer compilers...

I certainly don't intend to leave the magic egcs workarounds in the drivers
I maintain for 2.5.

Alan

2001-12-06 10:23:25

by Jakub Jelinek

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions

On Thu, Dec 06, 2001 at 02:15:34AM -0800, David S. Miller wrote:
> From: David Woodhouse <[email protected]>
> Date: Thu, 06 Dec 2001 09:40:19 +0000
>
> Doesn't work at all, or just doesn't work with the (current) minimum
> recommended compiler? We have to increase those minima at some point.
>
> The "golden" sparc64 compiler has been in use for years and is what
> has the weak problem, and updating it would be a major pain in the
> butt.

Note that gcc-2.96-RH (particularly 2.96-101) is not that far off from being
usable on sparc64 AFAIK (there is just one miscompilation in ext2_statfs
I'm aware of which I've submitted fix for review yesterday), of course
further testing may prove otherwise.

Jakub

2001-12-06 17:38:42

by Marcelo Tosatti

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions


Please regenerate this patch against -pre5 and then send me...

On Thu, 6 Dec 2001, Keith Owens wrote:

> This patch against 2.4.16 defines __devexit_p() for pointers to
> functions defined as __devexit, the wrapper inserts the function name
> or NULL, based on config options. It allows people to use the new
> binutils on the kernel, there are some real kernel bugs that binutils
> will find once this patch is in.
>
> I have patched all the obvious references to __devexit functions,
> leaving a few which appear to be real bugs. I notified the maintainers
> of the buggy code privately.
>
>
> Index: 16.1/Documentation/pci.txt
> --- 16.1/Documentation/pci.txt Tue, 06 Nov 2001 12:07:56 +1100 kaos (linux-2.4/a/d/42_pci.txt 1.1.1.2.1.2 644)
> +++ 16.1(w)/Documentation/pci.txt Thu, 06 Dec 2001 16:16:25 +1100 kaos (linux-2.4/a/d/42_pci.txt 1.1.1.2.1.2 644)
> @@ -104,6 +104,10 @@ Tips:
> If you are sure the driver is not a hotplug driver then use only
> __init/exit __initdata/exitdata.
>
> + Pointers to functions marked as __devexit must be created using
> + __devexit_p(function_name). That will generate the function
> + name or NULL if the __devexit function will be discarded.
> +
>
> 2. How to find PCI devices manually (the old style)
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Index: 16.1/include/linux/init.h
> --- 16.1/include/linux/init.h Mon, 30 Jul 2001 10:52:30 +1000 kaos (linux-2.4/f/b/11_init.h 1.1.1.1.1.2 644)
> +++ 16.1(w)/include/linux/init.h Thu, 06 Dec 2001 17:11:02 +1100 kaos (linux-2.4/f/b/11_init.h 1.1.1.1.1.2 644)
> @@ -111,7 +111,7 @@ extern struct kernel_param __setup_start
> */
> #define module_exit(x) __exitcall(x);
>
> -#else
> +#else /* MODULE */
>
> #define __init
> #define __exit
> @@ -141,7 +141,7 @@ typedef void (*__cleanup_module_func_t)(
>
> #define __setup(str,func) /* nothing */
>
> -#endif
> +#endif /* !MODULE */
>
> #ifdef CONFIG_HOTPLUG
> #define __devinit
> @@ -153,6 +153,18 @@ typedef void (*__cleanup_module_func_t)(
> #define __devinitdata __initdata
> #define __devexit __exit
> #define __devexitdata __exitdata
> +#endif
> +
> +/* Functions marked as __devexit may be discarded at kernel link time, depending
> + on config options. Newer versions of binutils detect references from
> + retained sections to discarded sections and flag an error. Pointers to
> + __devexit functions must use __devexit_p(function_name), the wrapper will
> + insert either the function_name or NULL, depending on the config options.
> + */
> +#if defined(MODULE) || defined(CONFIG_HOTPLUG)
> +#define __devexit_p(x) x
> +#else
> +#define __devexit_p(x) NULL
> #endif
>
> #endif /* _LINUX_INIT_H */
> Index: 16.1/drivers/media/video/bttv-driver.c
> --- 16.1/drivers/media/video/bttv-driver.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/t/b/47_bttv-drive 1.3.1.1.1.2.1.1.1.1.1.2 644)
> +++ 16.1(w)/drivers/media/video/bttv-driver.c Thu, 06 Dec 2001 16:30:16 +1100 kaos (linux-2.4/t/b/47_bttv-drive 1.3.1.1.1.2.1.1.1.1.1.2 644)
> @@ -3025,7 +3025,7 @@ static struct pci_driver bttv_pci_driver
> name: "bttv",
> id_table: bttv_pci_tbl,
> probe: bttv_probe,
> - remove: bttv_remove,
> + remove: __devexit_p(bttv_remove),
> };
>
> int bttv_init_module(void)
> Index: 16.1/drivers/ieee1394/ohci1394.c
> --- 16.1/drivers/ieee1394/ohci1394.c Thu, 04 Oct 2001 16:23:36 +1000 kaos (linux-2.4/v/b/2_ohci1394.c 1.1.1.1.1.3.1.3.1.2 644)
> +++ 16.1(w)/drivers/ieee1394/ohci1394.c Thu, 06 Dec 2001 17:12:55 +1100 kaos (linux-2.4/v/b/2_ohci1394.c 1.1.1.1.1.3.1.3.1.2 644)
> @@ -2423,7 +2423,7 @@ static struct pci_driver ohci1394_driver
> name: OHCI1394_DRIVER_NAME,
> id_table: ohci1394_pci_tbl,
> probe: ohci1394_add_one,
> - remove: ohci1394_remove_one,
> + remove: __devexit_p(ohci1394_remove_one),
> };
>
> static void __exit ohci1394_cleanup (void)
> Index: 16.1/drivers/pcmcia/pci_socket.c
> --- 16.1/drivers/pcmcia/pci_socket.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/v/b/38_pci_socket 1.1.1.3 644)
> +++ 16.1(w)/drivers/pcmcia/pci_socket.c Thu, 06 Dec 2001 16:40:06 +1100 kaos (linux-2.4/v/b/38_pci_socket 1.1.1.3 644)
> @@ -249,7 +249,7 @@ static struct pci_driver pci_cardbus_dri
> name: "cardbus",
> id_table: cardbus_table,
> probe: cardbus_probe,
> - remove: cardbus_remove,
> + remove: __devexit_p(cardbus_remove),
> suspend: cardbus_suspend,
> resume: cardbus_resume,
> };
> Index: 16.1/drivers/atm/firestream.c
> --- 16.1/drivers/atm/firestream.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/w/b/32_firestream 1.2.1.5.1.1 644)
> +++ 16.1(w)/drivers/atm/firestream.c Thu, 06 Dec 2001 16:18:40 +1100 kaos (linux-2.4/w/b/32_firestream 1.2.1.5.1.1 644)
> @@ -2102,7 +2102,7 @@ static struct pci_driver firestream_driv
> name: "firestream",
> id_table: firestream_pci_tbl,
> probe: firestream_init_one,
> - remove: firestream_remove_one,
> + remove: __devexit_p(firestream_remove_one),
> };
>
> static int __init firestream_init_module (void)
> Index: 16.1/drivers/atm/eni.c
> --- 16.1/drivers/atm/eni.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/x/b/10_eni.c 1.1.1.1.1.2.1.1 644)
> +++ 16.1(w)/drivers/atm/eni.c Thu, 06 Dec 2001 16:18:19 +1100 kaos (linux-2.4/x/b/10_eni.c 1.1.1.1.1.2.1.1 644)
> @@ -2310,7 +2310,7 @@ static struct pci_driver eni_driver = {
> name: DEV_LABEL,
> id_table: eni_pci_tbl,
> probe: eni_init_one,
> - remove: eni_remove_one,
> + remove: __devexit_p(eni_remove_one),
> };
>
>
> Index: 16.1/drivers/usb/usb-uhci.c
> --- 16.1/drivers/usb/usb-uhci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/z/b/2_usb-uhci.c 1.2.1.1.1.16 644)
> +++ 16.1(w)/drivers/usb/usb-uhci.c Thu, 06 Dec 2001 16:43:12 +1100 kaos (linux-2.4/z/b/2_usb-uhci.c 1.2.1.1.1.16 644)
> @@ -3070,7 +3070,7 @@ static struct pci_driver uhci_pci_driver
> id_table: &uhci_pci_ids [0],
>
> probe: uhci_pci_probe,
> - remove: uhci_pci_remove,
> + remove: __devexit_p(uhci_pci_remove),
>
> #ifdef CONFIG_PM
> suspend: uhci_pci_suspend,
> Index: 16.1/drivers/usb/uhci.c
> --- 16.1/drivers/usb/uhci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/z/b/4_uhci.c 1.1.2.1.2.1.2.3.1.12 644)
> +++ 16.1(w)/drivers/usb/uhci.c Thu, 06 Dec 2001 16:41:09 +1100 kaos (linux-2.4/z/b/4_uhci.c 1.1.2.1.2.1.2.3.1.12 644)
> @@ -2990,7 +2990,7 @@ static struct pci_driver uhci_pci_driver
> id_table: uhci_pci_ids,
>
> probe: uhci_pci_probe,
> - remove: uhci_pci_remove,
> + remove: __devexit_p(uhci_pci_remove),
>
> #ifdef CONFIG_PM
> suspend: uhci_pci_suspend,
> Index: 16.1/drivers/usb/usb-ohci.c
> --- 16.1/drivers/usb/usb-ohci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/z/b/28_usb-ohci.c 1.2.1.2.1.6.1.3.2.3.2.2 644)
> +++ 16.1(w)/drivers/usb/usb-ohci.c Thu, 06 Dec 2001 16:40:58 +1100 kaos (linux-2.4/z/b/28_usb-ohci.c 1.2.1.2.1.6.1.3.2.3.2.2 644)
> @@ -2860,7 +2860,7 @@ static struct pci_driver ohci_pci_driver
> id_table: &ohci_pci_ids [0],
>
> probe: ohci_pci_probe,
> - remove: ohci_pci_remove,
> + remove: __devexit_p(ohci_pci_remove),
>
> #ifdef CONFIG_PM
> suspend: ohci_pci_suspend,
> Index: 16.1/drivers/video/tdfxfb.c
> --- 16.1/drivers/video/tdfxfb.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/C/b/37_tdfxfb.c 1.2.2.1.1.1.1.1.1.5 644)
> +++ 16.1(w)/drivers/video/tdfxfb.c Thu, 06 Dec 2001 16:44:21 +1100 kaos (linux-2.4/C/b/37_tdfxfb.c 1.2.2.1.1.1.1.1.1.5 644)
> @@ -495,7 +495,7 @@ static struct pci_driver tdfxfb_driver =
> name: "tdfxfb",
> id_table: tdfxfb_id_table,
> probe: tdfxfb_probe,
> - remove: tdfxfb_remove,
> + remove: __devexit_p(tdfxfb_remove),
> };
>
> MODULE_DEVICE_TABLE(pci, tdfxfb_id_table);
> Index: 16.1/drivers/video/riva/fbdev.c
> --- 16.1/drivers/video/riva/fbdev.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/C/b/45_fbdev.c 1.5.1.4 644)
> +++ 16.1(w)/drivers/video/riva/fbdev.c Thu, 06 Dec 2001 16:43:24 +1100 kaos (linux-2.4/C/b/45_fbdev.c 1.5.1.4 644)
> @@ -2082,7 +2082,7 @@ static struct pci_driver rivafb_driver =
> name: "rivafb",
> id_table: rivafb_pci_tbl,
> probe: rivafb_init_one,
> - remove: rivafb_remove_one,
> + remove: __devexit_p(rivafb_remove_one),
> };
>
>
> Index: 16.1/drivers/video/cyber2000fb.c
> --- 16.1/drivers/video/cyber2000fb.c Fri, 26 Oct 2001 15:50:03 +1000 kaos (linux-2.4/D/b/3_cyber2000f 1.2.2.2.1.1.1.2.1.2 644)
> +++ 16.1(w)/drivers/video/cyber2000fb.c Thu, 06 Dec 2001 16:43:34 +1100 kaos (linux-2.4/D/b/3_cyber2000f 1.2.2.2.1.1.1.2.1.2 644)
> @@ -1683,7 +1683,7 @@ static struct pci_device_id cyberpro_pci
> static struct pci_driver cyberpro_driver = {
> name: "CyberPro",
> probe: cyberpro_probe,
> - remove: cyberpro_remove,
> + remove: __devexit_p(cyberpro_remove),
> suspend: cyberpro_suspend,
> resume: cyberpro_resume,
> id_table: cyberpro_pci_table
> Index: 16.1/drivers/video/imsttfb.c
> --- 16.1/drivers/video/imsttfb.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/D/b/42_imsttfb.c 1.2.2.1.1.3.1.1.1.3 644)
> +++ 16.1(w)/drivers/video/imsttfb.c Thu, 06 Dec 2001 16:43:51 +1100 kaos (linux-2.4/D/b/42_imsttfb.c 1.2.2.1.1.3.1.1.1.3 644)
> @@ -1643,7 +1643,7 @@ static struct pci_driver imsttfb_pci_dri
> name: "imsttfb",
> id_table: imsttfb_pci_tbl,
> probe: imsttfb_probe,
> - remove: imsttfb_remove,
> + remove: __devexit_p(imsttfb_remove),
> };
>
> static struct fb_ops imsttfb_ops = {
> Index: 16.1/drivers/sound/ymfpci.c
> --- 16.1/drivers/sound/ymfpci.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/L/b/45_ymfpci.c 1.4.1.9.1.1.1.2.1.3 644)
> +++ 16.1(w)/drivers/sound/ymfpci.c Thu, 06 Dec 2001 16:40:39 +1100 kaos (linux-2.4/L/b/45_ymfpci.c 1.4.1.9.1.1.1.2.1.3 644)
> @@ -2547,7 +2547,7 @@ static struct pci_driver ymfpci_driver =
> name: "ymfpci",
> id_table: ymf_id_tbl,
> probe: ymf_probe_one,
> - remove: ymf_remove_one,
> + remove: __devexit_p(ymf_remove_one),
> suspend: ymf_suspend,
> resume: ymf_resume
> };
> Index: 16.1/drivers/sound/emu10k1/main.c
> --- 16.1/drivers/sound/emu10k1/main.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/M/b/14_main.c 1.3.1.2.1.4 644)
> +++ 16.1(w)/drivers/sound/emu10k1/main.c Thu, 06 Dec 2001 16:40:17 +1100 kaos (linux-2.4/M/b/14_main.c 1.3.1.2.1.4 644)
> @@ -1127,7 +1127,7 @@ static struct pci_driver emu10k1_pci_dri
> name: "emu10k1",
> id_table: emu10k1_pci_tbl,
> probe: emu10k1_probe,
> - remove: emu10k1_remove,
> + remove: __devexit_p(emu10k1_remove),
> };
>
> static int __init emu10k1_init_module(void)
> Index: 16.1/drivers/char/joystick/pcigame.c
> --- 16.1/drivers/char/joystick/pcigame.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/Y/b/30_pcigame.c 1.1.1.2 644)
> +++ 16.1(w)/drivers/char/joystick/pcigame.c Thu, 06 Dec 2001 16:20:46 +1100 kaos (linux-2.4/Y/b/30_pcigame.c 1.1.1.2 644)
> @@ -180,7 +180,7 @@ static struct pci_driver pcigame_driver
> name: "pcigame",
> id_table: pcigame_id_table,
> probe: pcigame_probe,
> - remove: pcigame_remove,
> + remove: __devexit_p(pcigame_remove),
> };
>
> int __init pcigame_init(void)
> Index: 16.1/drivers/char/serial.c
> --- 16.1/drivers/char/serial.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/b/c/22_serial.c 1.1.3.2.2.3.2.2.1.8.1.1 644)
> +++ 16.1(w)/drivers/char/serial.c Thu, 06 Dec 2001 16:20:59 +1100 kaos (linux-2.4/b/c/22_serial.c 1.1.3.2.2.3.2.2.1.8.1.1 644)
> @@ -4896,7 +4896,7 @@ MODULE_DEVICE_TABLE(pci, serial_pci_tbl)
> static struct pci_driver serial_pci_driver = {
> name: "serial",
> probe: serial_init_one,
> - remove: serial_remove_one,
> + remove: __devexit_p(serial_remove_one),
> id_table: serial_pci_tbl,
> };
>
> Index: 16.1/drivers/block/cciss.c
> --- 16.1/drivers/block/cciss.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/c/c/34_cciss.c 1.4.2.3.1.2.1.9 644)
> +++ 16.1(w)/drivers/block/cciss.c Thu, 06 Dec 2001 16:19:09 +1100 kaos (linux-2.4/c/c/34_cciss.c 1.4.2.3.1.2.1.9 644)
> @@ -2019,7 +2019,7 @@ static void __devexit cciss_remove_one (
> static struct pci_driver cciss_pci_driver = {
> name: "cciss",
> probe: cciss_init_one,
> - remove: cciss_remove_one,
> + remove: __devexit_p(cciss_remove_one),
> id_table: cciss_pci_device_id, /* id_table */
> };
>
> Index: 16.1/drivers/net/winbond-840.c
> --- 16.1/drivers/net/winbond-840.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/c/c/43_winbond-84 1.2.1.4.1.2.1.7 644)
> +++ 16.1(w)/drivers/net/winbond-840.c Thu, 06 Dec 2001 16:38:34 +1100 kaos (linux-2.4/c/c/43_winbond-84 1.2.1.4.1.2.1.7 644)
> @@ -1697,7 +1697,7 @@ static struct pci_driver w840_driver = {
> name: DRV_NAME,
> id_table: w840_pci_tbl,
> probe: w840_probe1,
> - remove: w840_remove1,
> + remove: __devexit_p(w840_remove1),
> #ifdef CONFIG_PM
> suspend: w840_suspend,
> resume: w840_resume,
> Index: 16.1/drivers/net/sundance.c
> --- 16.1/drivers/net/sundance.c Tue, 23 Oct 2001 14:35:33 +1000 kaos (linux-2.4/c/c/44_sundance.c 1.2.1.10.1.2 644)
> +++ 16.1(w)/drivers/net/sundance.c Thu, 06 Dec 2001 16:38:48 +1100 kaos (linux-2.4/c/c/44_sundance.c 1.2.1.10.1.2 644)
> @@ -1474,7 +1474,7 @@ static struct pci_driver sundance_driver
> name: DRV_NAME,
> id_table: sundance_pci_tbl,
> probe: sundance_probe1,
> - remove: sundance_remove1,
> + remove: __devexit_p(sundance_remove1),
> };
>
> static int __init sundance_init(void)
> Index: 16.1/drivers/net/natsemi.c
> --- 16.1/drivers/net/natsemi.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/c/c/45_natsemi.c 1.3.1.8.1.1.1.6 644)
> +++ 16.1(w)/drivers/net/natsemi.c Thu, 06 Dec 2001 16:37:32 +1100 kaos (linux-2.4/c/c/45_natsemi.c 1.3.1.8.1.1.1.6 644)
> @@ -2518,7 +2518,7 @@ static struct pci_driver natsemi_driver
> name: DRV_NAME,
> id_table: natsemi_pci_tbl,
> probe: natsemi_probe1,
> - remove: natsemi_remove1,
> + remove: __devexit_p(natsemi_remove1),
> #ifdef CONFIG_PM
> suspend: natsemi_suspend,
> resume: natsemi_resume,
> Index: 16.1/drivers/net/pcmcia/xircom_tulip_cb.c
> --- 16.1/drivers/net/pcmcia/xircom_tulip_cb.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/d/c/16_xircom_tul 1.4.1.8 644)
> +++ 16.1(w)/drivers/net/pcmcia/xircom_tulip_cb.c Thu, 06 Dec 2001 16:32:03 +1100 kaos (linux-2.4/d/c/16_xircom_tul 1.4.1.8 644)
> @@ -1748,7 +1748,7 @@ static struct pci_driver xircom_driver =
> name: DRV_NAME,
> id_table: xircom_pci_table,
> probe: xircom_init_one,
> - remove: xircom_remove_one,
> + remove: __devexit_p(xircom_remove_one),
> #ifdef CONFIG_PM
> suspend: xircom_suspend,
> resume: xircom_resume
> Index: 16.1/drivers/net/ioc3-eth.c
> --- 16.1/drivers/net/ioc3-eth.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/d/c/49_ioc3-eth.c 1.1.2.1.1.3.1.2.1.2 644)
> +++ 16.1(w)/drivers/net/ioc3-eth.c Thu, 06 Dec 2001 16:36:43 +1100 kaos (linux-2.4/d/c/49_ioc3-eth.c 1.1.2.1.1.3.1.2.1.2 644)
> @@ -1515,7 +1515,7 @@ static struct pci_driver ioc3_driver = {
> name: "ioc3-eth",
> id_table: ioc3_pci_tbl,
> probe: ioc3_probe,
> - remove: ioc3_remove_one,
> + remove: __devexit_p(ioc3_remove_one),
> };
>
> static int __init ioc3_init_module(void)
> Index: 16.1/drivers/net/tulip/tulip_core.c
> --- 16.1/drivers/net/tulip/tulip_core.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/e/c/6_tulip_core 1.1.1.1.1.1.2.3.1.3.1.12 644)
> +++ 16.1(w)/drivers/net/tulip/tulip_core.c Thu, 06 Dec 2001 16:33:01 +1100 kaos (linux-2.4/e/c/6_tulip_core 1.1.1.1.1.1.2.3.1.3.1.12 644)
> @@ -1889,7 +1889,7 @@ static struct pci_driver tulip_driver =
> name: DRV_NAME,
> id_table: tulip_pci_tbl,
> probe: tulip_init_one,
> - remove: tulip_remove_one,
> + remove: __devexit_p(tulip_remove_one),
> #ifdef CONFIG_PM
> suspend: tulip_suspend,
> resume: tulip_resume,
> Index: 16.1/drivers/net/8139too.c
> --- 16.1/drivers/net/8139too.c Tue, 27 Nov 2001 11:15:00 +1100 kaos (linux-2.4/f/c/30_8139too.c 1.2.1.5.1.1.1.5.1.7 644)
> +++ 16.1(w)/drivers/net/8139too.c Thu, 06 Dec 2001 16:34:18 +1100 kaos (linux-2.4/f/c/30_8139too.c 1.2.1.5.1.1.1.5.1.7 644)
> @@ -2493,7 +2493,7 @@ static struct pci_driver rtl8139_pci_dri
> name: DRV_NAME,
> id_table: rtl8139_pci_tbl,
> probe: rtl8139_init_one,
> - remove: rtl8139_remove_one,
> + remove: __devexit_p(rtl8139_remove_one),
> #ifdef CONFIG_PM
> suspend: rtl8139_suspend,
> resume: rtl8139_resume,
> Index: 16.1/drivers/net/ne2k-pci.c
> --- 16.1/drivers/net/ne2k-pci.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/f/c/42_ne2k-pci.c 1.3.1.1.1.1.1.1 644)
> +++ 16.1(w)/drivers/net/ne2k-pci.c Thu, 06 Dec 2001 16:37:42 +1100 kaos (linux-2.4/f/c/42_ne2k-pci.c 1.3.1.1.1.1.1.1 644)
> @@ -642,7 +642,7 @@ static void __devexit ne2k_pci_remove_on
> static struct pci_driver ne2k_driver = {
> name: DRV_NAME,
> probe: ne2k_pci_init_one,
> - remove: ne2k_pci_remove_one,
> + remove: __devexit_p(ne2k_pci_remove_one),
> id_table: ne2k_pci_tbl,
> };
>
> Index: 16.1/drivers/net/epic100.c
> --- 16.1/drivers/net/epic100.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/f/c/43_epic100.c 1.2.1.4.1.2.1.2.1.3 644)
> +++ 16.1(w)/drivers/net/epic100.c Thu, 06 Dec 2001 16:36:13 +1100 kaos (linux-2.4/f/c/43_epic100.c 1.2.1.4.1.2.1.2.1.3 644)
> @@ -1507,7 +1507,7 @@ static struct pci_driver epic_driver = {
> name: DRV_NAME,
> id_table: epic_pci_tbl,
> probe: epic_init_one,
> - remove: epic_remove_one,
> + remove: __devexit_p(epic_remove_one),
> #ifdef CONFIG_PM
> suspend: epic_suspend,
> resume: epic_resume,
> Index: 16.1/drivers/net/arcnet/com20020-pci.c
> --- 16.1/drivers/net/arcnet/com20020-pci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/h/c/3_com20020-p 1.2.1.1.1.3 644)
> +++ 16.1(w)/drivers/net/arcnet/com20020-pci.c Thu, 06 Dec 2001 16:30:57 +1100 kaos (linux-2.4/h/c/3_com20020-p 1.2.1.1.1.3 644)
> @@ -160,7 +160,7 @@ static struct pci_driver com20020pci_dri
> name: "com20020",
> id_table: com20020pci_id_table,
> probe: com20020pci_probe,
> - remove: com20020pci_remove
> + remove: __devexit_p(com20020pci_remove),
> };
>
> static int __init com20020pci_init(void)
> Index: 16.1/drivers/net/sis900.c
> --- 16.1/drivers/net/sis900.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/h/c/13_sis900.c 1.3.1.11.1.3 644)
> +++ 16.1(w)/drivers/net/sis900.c Thu, 06 Dec 2001 16:38:10 +1100 kaos (linux-2.4/h/c/13_sis900.c 1.3.1.11.1.3 644)
> @@ -2098,7 +2098,7 @@ static struct pci_driver sis900_pci_driv
> name: SIS900_MODULE_NAME,
> id_table: sis900_pci_tbl,
> probe: sis900_probe,
> - remove: sis900_remove,
> + remove: __devexit_p(sis900_remove),
> };
>
> static int __init sis900_init_module(void)
> Index: 16.1/drivers/net/yellowfin.c
> --- 16.1/drivers/net/yellowfin.c Tue, 23 Oct 2001 14:35:33 +1000 kaos (linux-2.4/h/c/17_yellowfin. 1.1.1.3.1.8.1.1 644)
> +++ 16.1(w)/drivers/net/yellowfin.c Thu, 06 Dec 2001 16:39:33 +1100 kaos (linux-2.4/h/c/17_yellowfin. 1.1.1.3.1.8.1.1 644)
> @@ -1506,7 +1506,7 @@ static struct pci_driver yellowfin_drive
> name: DRV_NAME,
> id_table: yellowfin_pci_tbl,
> probe: yellowfin_init_one,
> - remove: yellowfin_remove_one,
> + remove: __devexit_p(yellowfin_remove_one),
> };
>
>
> Index: 16.1/drivers/net/via-rhine.c
> --- 16.1/drivers/net/via-rhine.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/h/c/19_via-rhine. 1.1.1.4.1.2.1.3.1.2.1.1.1.1 644)
> +++ 16.1(w)/drivers/net/via-rhine.c Thu, 06 Dec 2001 16:39:20 +1100 kaos (linux-2.4/h/c/19_via-rhine. 1.1.1.4.1.2.1.3.1.2.1.1.1.1 644)
> @@ -1667,7 +1667,7 @@ static struct pci_driver via_rhine_drive
> name: "via-rhine",
> id_table: via_rhine_pci_tbl,
> probe: via_rhine_init_one,
> - remove: via_rhine_remove_one,
> + remove: __devexit_p(via_rhine_remove_one),
> };
>
>
> Index: 16.1/drivers/net/starfire.c
> --- 16.1/drivers/net/starfire.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/h/c/22_starfire.c 1.1.1.9.1.3 644)
> +++ 16.1(w)/drivers/net/starfire.c Thu, 06 Dec 2001 16:38:22 +1100 kaos (linux-2.4/h/c/22_starfire.c 1.1.1.9.1.3 644)
> @@ -1963,7 +1963,7 @@ static void __devexit starfire_remove_on
> static struct pci_driver starfire_driver = {
> name: DRV_NAME,
> probe: starfire_init_one,
> - remove: starfire_remove_one,
> + remove: __devexit_p(starfire_remove_one),
> id_table: starfire_pci_tbl,
> };
>
> Index: 16.1/drivers/net/eepro100.c
> --- 16.1/drivers/net/eepro100.c Tue, 13 Nov 2001 08:45:38 +1100 kaos (linux-2.4/h/c/27_eepro100.c 1.1.1.1.1.2.6.4.2.4 644)
> +++ 16.1(w)/drivers/net/eepro100.c Thu, 06 Dec 2001 16:36:00 +1100 kaos (linux-2.4/h/c/27_eepro100.c 1.1.1.1.1.2.6.4.2.4 644)
> @@ -2281,7 +2281,7 @@ static struct pci_driver eepro100_driver
> name: "eepro100",
> id_table: eepro100_pci_tbl,
> probe: eepro100_init_one,
> - remove: eepro100_remove_one,
> + remove: __devexit_p(eepro100_remove_one),
> #ifdef CONFIG_PM
> suspend: eepro100_suspend,
> resume: eepro100_resume,
> Index: 16.1/drivers/net/defxx.c
> --- 16.1/drivers/net/defxx.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/h/c/40_defxx.c 1.2.1.4.1.3.1.1 644)
> +++ 16.1(w)/drivers/net/defxx.c Thu, 06 Dec 2001 16:35:16 +1100 kaos (linux-2.4/h/c/40_defxx.c 1.2.1.4.1.3.1.1 644)
> @@ -3360,7 +3360,7 @@ MODULE_DEVICE_TABLE(pci, dfx_pci_tbl);
> static struct pci_driver dfx_driver = {
> name: "defxx",
> probe: dfx_init_one,
> - remove: dfx_remove_one,
> + remove: __devexit_p(dfx_remove_one),
> id_table: dfx_pci_tbl,
> };
>
> Index: 16.1/drivers/net/tokenring/lanstreamer.c
> --- 16.1/drivers/net/tokenring/lanstreamer.c Mon, 12 Nov 2001 11:34:37 +1100 kaos (linux-2.4/i/c/46_lanstreame 1.3.1.1.1.2.1.3 644)
> +++ 16.1(w)/drivers/net/tokenring/lanstreamer.c Thu, 06 Dec 2001 16:32:35 +1100 kaos (linux-2.4/i/c/46_lanstreame 1.3.1.1.1.2.1.3 644)
> @@ -1812,7 +1812,7 @@ static struct pci_driver streamer_pci_dr
> name: "lanstreamer",
> id_table: streamer_pci_tbl,
> probe: streamer_init_one,
> - remove: streamer_remove_one,
> + remove: __devexit_p(streamer_remove_one),
> };
>
> static int __init streamer_init_module(void) {
> Index: 16.1/drivers/net/tokenring/olympic.c
> --- 16.1/drivers/net/tokenring/olympic.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/j/c/7_olympic.c 1.2.1.2.1.2.1.1.1.1.1.1 644)
> +++ 16.1(w)/drivers/net/tokenring/olympic.c Thu, 06 Dec 2001 16:32:48 +1100 kaos (linux-2.4/j/c/7_olympic.c 1.2.1.2.1.2.1.1.1.1.1.1 644)
> @@ -1705,7 +1705,7 @@ static struct pci_driver olympic_driver
> name: "olympic",
> id_table: olympic_pci_tbl,
> probe: olympic_probe,
> - remove: olympic_remove_one
> + remove: __devexit_p(olympic_remove_one),
> };
>
> static int __init olympic_pci_init(void)
> Index: 16.1/drivers/net/3c59x.c
> --- 16.1/drivers/net/3c59x.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/j/c/16_3c59x.c 1.3.1.8 644)
> +++ 16.1(w)/drivers/net/3c59x.c Thu, 06 Dec 2001 16:34:31 +1100 kaos (linux-2.4/j/c/16_3c59x.c 1.3.1.8 644)
> @@ -2919,7 +2919,7 @@ static void __devexit vortex_remove_one
> static struct pci_driver vortex_driver = {
> name: "3c59x",
> probe: vortex_init_one,
> - remove: vortex_remove_one,
> + remove: __devexit_p(vortex_remove_one),
> id_table: vortex_pci_tbl,
> #ifdef CONFIG_PM
> suspend: vortex_suspend,
> Index: 16.1/drivers/net/tlan.c
> --- 16.1/drivers/net/tlan.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/l/c/11_tlan.c 1.1.1.2.1.3.1.1 644)
> +++ 16.1(w)/drivers/net/tlan.c Thu, 06 Dec 2001 16:39:11 +1100 kaos (linux-2.4/l/c/11_tlan.c 1.1.1.2.1.3.1.1 644)
> @@ -430,7 +430,7 @@ static struct pci_driver tlan_driver = {
> name: "tlan",
> id_table: tlan_pci_tbl,
> probe: tlan_init_one,
> - remove: tlan_remove_one,
> + remove: __devexit_p(tlan_remove_one),
> };
>
> static int __init tlan_probe(void)
> Index: 16.1/drivers/net/pci-skeleton.c
> --- 16.1/drivers/net/pci-skeleton.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/q/d/47_pci-skelet 1.1.1.7.1.4 644)
> +++ 16.1(w)/drivers/net/pci-skeleton.c Thu, 06 Dec 2001 16:37:20 +1100 kaos (linux-2.4/q/d/47_pci-skelet 1.1.1.7.1.4 644)
> @@ -1980,7 +1980,7 @@ static struct pci_driver netdrv_pci_driv
> name: MODNAME,
> id_table: netdrv_pci_tbl,
> probe: netdrv_init_one,
> - remove: netdrv_remove_one,
> + remove: __devexit_p(netdrv_remove_one),
> #ifdef CONFIG_PM
> suspend: netdrv_suspend,
> resume: netdrv_resume,
> Index: 16.1/drivers/media/radio/radio-maxiradio.c
> --- 16.1/drivers/media/radio/radio-maxiradio.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/x/d/25_radio-maxi 1.1.1.1.1.1 644)
> +++ 16.1(w)/drivers/media/radio/radio-maxiradio.c Thu, 06 Dec 2001 16:27:50 +1100 kaos (linux-2.4/x/d/25_radio-maxi 1.1.1.1.1.1 644)
> @@ -376,7 +376,7 @@ static struct pci_driver maxiradio_drive
> name: "radio-maxiradio",
> id_table: maxiradio_pci_tbl,
> probe: maxiradio_init_one,
> - remove: maxiradio_remove_one,
> + remove: __devexit_p(maxiradio_remove_one),
> };
>
> int __init maxiradio_radio_init(void)
> Index: 16.1/drivers/net/sungem.c
> --- 16.1/drivers/net/sungem.c Tue, 23 Oct 2001 14:35:33 +1000 kaos (linux-2.4/E/d/26_sungem.c 1.6.1.6 644)
> +++ 16.1(w)/drivers/net/sungem.c Thu, 06 Dec 2001 16:38:58 +1100 kaos (linux-2.4/E/d/26_sungem.c 1.6.1.6 644)
> @@ -2140,7 +2140,7 @@ static struct pci_driver gem_driver = {
> name: GEM_MODULE_NAME,
> id_table: gem_pci_tbl,
> probe: gem_init_one,
> - remove: gem_remove_one,
> + remove: __devexit_p(gem_remove_one),
> };
>
> static int __init gem_init(void)
> Index: 16.1/drivers/char/joystick/cs461x.c
> --- 16.1/drivers/char/joystick/cs461x.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/K/d/4_cs461x.c 1.1.1.2 644)
> +++ 16.1(w)/drivers/char/joystick/cs461x.c Thu, 06 Dec 2001 16:19:42 +1100 kaos (linux-2.4/K/d/4_cs461x.c 1.1.1.2 644)
> @@ -313,7 +313,7 @@ static struct pci_driver cs461x_pci_driv
> name: "PCI Gameport",
> id_table: cs461x_pci_tbl,
> probe: cs461x_pci_probe,
> - remove: cs461x_pci_remove,
> + remove: __devexit_p(cs461x_pci_remove),
> };
>
> int __init js_cs461x_init(void)
> Index: 16.1/drivers/net/fealnx.c
> --- 16.1/drivers/net/fealnx.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/i/e/0_fealnx.c 1.2.1.7 644)
> +++ 16.1(w)/drivers/net/fealnx.c Thu, 06 Dec 2001 16:36:32 +1100 kaos (linux-2.4/i/e/0_fealnx.c 1.2.1.7 644)
> @@ -1858,7 +1858,7 @@ static struct pci_driver fealnx_driver =
> name: "fealnx",
> id_table: fealnx_pci_tbl,
> probe: fealnx_init_one,
> - remove: fealnx_remove_one,
> + remove: __devexit_p(fealnx_remove_one),
> };
>
> static int __init fealnx_init(void)
> Index: 16.1/drivers/net/wireless/airo.c
> --- 16.1/drivers/net/wireless/airo.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/w/e/24_airo.c 1.2.1.8 644)
> +++ 16.1(w)/drivers/net/wireless/airo.c Thu, 06 Dec 2001 16:34:04 +1100 kaos (linux-2.4/w/e/24_airo.c 1.2.1.8 644)
> @@ -64,7 +64,7 @@ static struct pci_driver airo_driver = {
> name: "airo",
> id_table: card_ids,
> probe: airo_pci_probe,
> - remove: airo_pci_remove,
> + remove: __devexit_p(airo_pci_remove),
> };
> #endif /* CONFIG_PCI */
>
> Index: 16.1/drivers/isdn/tpam/tpam_main.c
> --- 16.1/drivers/isdn/tpam/tpam_main.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/D/e/29_tpam_main. 1.1.1.1.1.1 644)
> +++ 16.1(w)/drivers/isdn/tpam/tpam_main.c Thu, 06 Dec 2001 16:27:11 +1100 kaos (linux-2.4/D/e/29_tpam_main. 1.1.1.1.1.1 644)
> @@ -254,7 +254,7 @@ static struct pci_driver tpam_driver = {
> name: "tpam",
> id_table: tpam_pci_tbl,
> probe: tpam_probe,
> - remove: tpam_remove,
> + remove: __devexit_p(tpam_remove),
> };
>
> static int __init tpam_init(void) {
> Index: 16.1/drivers/media/video/meye.c
> --- 16.1/drivers/media/video/meye.c Fri, 26 Oct 2001 15:50:03 +1000 kaos (linux-2.4/G/e/0_meye.c 1.2.1.1.1.1 644)
> +++ 16.1(w)/drivers/media/video/meye.c Thu, 06 Dec 2001 16:30:30 +1100 kaos (linux-2.4/G/e/0_meye.c 1.2.1.1.1.1 644)
> @@ -1460,7 +1460,7 @@ static struct pci_driver meye_driver = {
> name: "meye",
> id_table: meye_pci_tbl,
> probe: meye_probe,
> - remove: meye_remove,
> + remove: __devexit_p(meye_remove),
> };
>
> static int __init meye_init_module(void) {
> Index: 16.1/drivers/net/dl2k.c
> --- 16.1/drivers/net/dl2k.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/G/e/43_dl2k.c 1.6 644)
> +++ 16.1(w)/drivers/net/dl2k.c Thu, 06 Dec 2001 16:35:35 +1100 kaos (linux-2.4/G/e/43_dl2k.c 1.6 644)
> @@ -1671,7 +1671,7 @@ static struct pci_driver rio_driver = {
> name:"dl2k",
> id_table:rio_pci_tbl,
> probe:rio_probe1,
> - remove:rio_remove1,
> + remove:__devexit_p(rio_remove1),
> };
>
> static int __init
> Index: 16.1/drivers/parport/parport_serial.c
> --- 16.1/drivers/parport/parport_serial.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/G/e/47_parport_se 1.5 644)
> +++ 16.1(w)/drivers/parport/parport_serial.c Thu, 06 Dec 2001 16:39:45 +1100 kaos (linux-2.4/G/e/47_parport_se 1.5 644)
> @@ -331,7 +331,7 @@ static struct pci_driver parport_serial_
> name: "parport_serial",
> id_table: parport_serial_pci_tbl,
> probe: parport_serial_pci_probe,
> - remove: parport_serial_pci_remove,
> + remove: __devexit_p(parport_serial_pci_remove),
> };
>
>
> Index: 16.1/drivers/media/radio/radio-gemtek-pci.c
> --- 16.1/drivers/media/radio/radio-gemtek-pci.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/L/e/51_radio-gemt 1.1.1.1 644)
> +++ 16.1(w)/drivers/media/radio/radio-gemtek-pci.c Thu, 06 Dec 2001 16:27:38 +1100 kaos (linux-2.4/L/e/51_radio-gemt 1.1.1.1 644)
> @@ -424,7 +424,7 @@ static struct pci_driver gemtek_pci_driv
> name: "gemtek_pci",
> id_table: gemtek_pci_id,
> probe: gemtek_pci_probe,
> - remove: gemtek_pci_remove
> + remove: __devexit_p(gemtek_pci_remove),
> };
>
> static int __init gemtek_pci_init_module( void )
> Index: 16.1/drivers/sound/btaudio.c
> --- 16.1/drivers/sound/btaudio.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/Q/e/39_btaudio.c 1.4.1.1 644)
> +++ 16.1(w)/drivers/sound/btaudio.c Thu, 06 Dec 2001 16:40:28 +1100 kaos (linux-2.4/Q/e/39_btaudio.c 1.4.1.1 644)
> @@ -1030,7 +1030,7 @@ static struct pci_driver btaudio_pci_dri
> name: "btaudio",
> id_table: btaudio_pci_tbl,
> probe: btaudio_probe,
> - remove: btaudio_remove,
> + remove: __devexit_p(btaudio_remove),
> };
>
> int btaudio_init_module(void)
> Index: 16.1/drivers/net/wan/farsync.c
> --- 16.1/drivers/net/wan/farsync.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/Q/e/42_farsync.c 1.1.1.2.1.1 644)
> +++ 16.1(w)/drivers/net/wan/farsync.c Thu, 06 Dec 2001 16:33:16 +1100 kaos (linux-2.4/Q/e/42_farsync.c 1.1.1.2.1.1 644)
> @@ -1810,7 +1810,7 @@ static struct pci_driver fst_driver = {
> name: FST_NAME,
> id_table: fst_pci_dev_id,
> probe: fst_add_one,
> - remove: fst_remove_one,
> + remove: __devexit_p(fst_remove_one),
> suspend: NULL,
> resume: NULL,
> };
> Index: 16.1/drivers/net/irda/vlsi_ir.c
> --- 16.1/drivers/net/irda/vlsi_ir.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/Q/e/43_vlsi_ir.c 1.6 644)
> +++ 16.1(w)/drivers/net/irda/vlsi_ir.c Thu, 06 Dec 2001 16:31:41 +1100 kaos (linux-2.4/Q/e/43_vlsi_ir.c 1.6 644)
> @@ -1291,7 +1291,7 @@ static struct pci_driver vlsi_irda_drive
> name: drivername,
> id_table: vlsi_irda_table,
> probe: vlsi_irda_probe,
> - remove: vlsi_irda_remove,
> + remove: __devexit_p(vlsi_irda_remove),
> suspend: vlsi_irda_suspend,
> resume: vlsi_irda_resume,
> };
> Index: 16.1/drivers/video/radeonfb.c
> --- 16.1/drivers/video/radeonfb.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/i/f/9_radeonfb.c 1.6 644)
> +++ 16.1(w)/drivers/video/radeonfb.c Thu, 06 Dec 2001 16:44:08 +1100 kaos (linux-2.4/i/f/9_radeonfb.c 1.6 644)
> @@ -619,7 +619,7 @@ static struct pci_driver radeonfb_driver
> name: "radeonfb",
> id_table: radeonfb_pci_table,
> probe: radeonfb_pci_register,
> - remove: radeonfb_pci_unregister,
> + remove: __devexit_p(radeonfb_pci_unregister),
> };
>
>
> Index: 16.1/drivers/isdn/hisax/st5481_init.c
> --- 16.1/drivers/isdn/hisax/st5481_init.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/l/f/11_st5481_ini 1.2 644)
> +++ 16.1(w)/drivers/isdn/hisax/st5481_init.c Thu, 06 Dec 2001 16:25:59 +1100 kaos (linux-2.4/l/f/11_st5481_ini 1.2 644)
> @@ -178,7 +178,7 @@ MODULE_DEVICE_TABLE (usb, st5481_ids);
> static struct usb_driver st5481_usb_driver = {
> name: "st5481_usb",
> probe: probe_st5481,
> - disconnect: disconnect_st5481,
> + disconnect: __devexit_p(disconnect_st5481),
> id_table: st5481_ids,
> };
>
> Index: 16.1/drivers/net/ns83820.c
> --- 16.1/drivers/net/ns83820.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/l/f/32_ns83820.c 1.6 644)
> +++ 16.1(w)/drivers/net/ns83820.c Thu, 06 Dec 2001 16:37:57 +1100 kaos (linux-2.4/l/f/32_ns83820.c 1.6 644)
> @@ -1455,7 +1455,7 @@ static struct pci_driver driver = {
> name: "ns83820",
> id_table: ns83820_pci_tbl,
> probe: ns83820_init_one,
> - remove: ns83820_remove_one,
> + remove: __devexit_p(ns83820_remove_one),
> #if 0 /* FIXME: implement */
> suspend: ,
> resume: ,
> Index: 16.1/drivers/char/joystick/emu10k1-gp.c
> --- 16.1/drivers/char/joystick/emu10k1-gp.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/m/f/32_emu10k1-gp 1.2 644)
> +++ 16.1(w)/drivers/char/joystick/emu10k1-gp.c Thu, 06 Dec 2001 16:20:28 +1100 kaos (linux-2.4/m/f/32_emu10k1-gp 1.2 644)
> @@ -108,7 +108,7 @@ static struct pci_driver emu_driver = {
> name: "Emu10k1 Gameport",
> id_table: emu_tbl,
> probe: emu_probe,
> - remove: emu_remove,
> + remove: __devexit_p(emu_remove),
> };
>
> int __init emu_init(void)
> Index: 16.1/drivers/net/pcmcia/xircom_cb.c
> --- 16.1/drivers/net/pcmcia/xircom_cb.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/o/f/25_xircom_cb. 1.3 644)
> +++ 16.1(w)/drivers/net/pcmcia/xircom_cb.c Thu, 06 Dec 2001 16:32:21 +1100 kaos (linux-2.4/o/f/25_xircom_cb. 1.3 644)
> @@ -170,7 +170,7 @@ static struct pci_driver xircom_ops = {
> name: "xircom_cb",
> id_table: xircom_pci_table,
> probe: xircom_probe,
> - remove: xircom_remove,
> + remove: __devexit_p(xircom_remove),
> };
>
>
> Index: 16.1/drivers/net/wireless/orinoco_plx.c
> --- 16.1/drivers/net/wireless/orinoco_plx.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/r/f/46_orinoco_pl 1.1 644)
> +++ 16.1(w)/drivers/net/wireless/orinoco_plx.c Thu, 06 Dec 2001 16:33:46 +1100 kaos (linux-2.4/r/f/46_orinoco_pl 1.1 644)
> @@ -279,7 +279,7 @@ static struct pci_driver orinoco_plx_dri
> name:"orinoco_plx",
> id_table:orinoco_plx_pci_id_table,
> probe:orinoco_plx_init_one,
> - remove:orinoco_plx_remove_one,
> + remove:__devexit_p(orinoco_plx_remove_one),
> suspend:0,
> resume:0
> };
> Index: 16.1/drivers/net/8139cp.c
> --- 16.1/drivers/net/8139cp.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/D/f/10_8139cp.c 1.3 644)
> +++ 16.1(w)/drivers/net/8139cp.c Thu, 06 Dec 2001 16:34:44 +1100 kaos (linux-2.4/D/f/10_8139cp.c 1.3 644)
> @@ -1313,7 +1313,7 @@ static struct pci_driver cp_driver = {
> name: DRV_NAME,
> id_table: cp_pci_tbl,
> probe: cp_init_one,
> - remove: cp_remove_one,
> + remove: __devexit_p(cp_remove_one),
> };
>
> static int __init cp_init (void)
>

2001-12-06 17:39:02

by Marcelo Tosatti

[permalink] [raw]
Subject: Re: [patch] 2.4.16 for pointers to __devexit functions


pre5 will be released within minutes or hours...

On Thu, 6 Dec 2001, Marcelo Tosatti wrote:

>
> Please regenerate this patch against -pre5 and then send me...
>
> On Thu, 6 Dec 2001, Keith Owens wrote:
>
> > This patch against 2.4.16 defines __devexit_p() for pointers to
> > functions defined as __devexit, the wrapper inserts the function name
> > or NULL, based on config options. It allows people to use the new
> > binutils on the kernel, there are some real kernel bugs that binutils
> > will find once this patch is in.
> >
> > I have patched all the obvious references to __devexit functions,
> > leaving a few which appear to be real bugs. I notified the maintainers
> > of the buggy code privately.
> >
> >
> > Index: 16.1/Documentation/pci.txt
> > --- 16.1/Documentation/pci.txt Tue, 06 Nov 2001 12:07:56 +1100 kaos (linux-2.4/a/d/42_pci.txt 1.1.1.2.1.2 644)
> > +++ 16.1(w)/Documentation/pci.txt Thu, 06 Dec 2001 16:16:25 +1100 kaos (linux-2.4/a/d/42_pci.txt 1.1.1.2.1.2 644)
> > @@ -104,6 +104,10 @@ Tips:
> > If you are sure the driver is not a hotplug driver then use only
> > __init/exit __initdata/exitdata.
> >
> > + Pointers to functions marked as __devexit must be created using
> > + __devexit_p(function_name). That will generate the function
> > + name or NULL if the __devexit function will be discarded.
> > +
> >
> > 2. How to find PCI devices manually (the old style)
> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > Index: 16.1/include/linux/init.h
> > --- 16.1/include/linux/init.h Mon, 30 Jul 2001 10:52:30 +1000 kaos (linux-2.4/f/b/11_init.h 1.1.1.1.1.2 644)
> > +++ 16.1(w)/include/linux/init.h Thu, 06 Dec 2001 17:11:02 +1100 kaos (linux-2.4/f/b/11_init.h 1.1.1.1.1.2 644)
> > @@ -111,7 +111,7 @@ extern struct kernel_param __setup_start
> > */
> > #define module_exit(x) __exitcall(x);
> >
> > -#else
> > +#else /* MODULE */
> >
> > #define __init
> > #define __exit
> > @@ -141,7 +141,7 @@ typedef void (*__cleanup_module_func_t)(
> >
> > #define __setup(str,func) /* nothing */
> >
> > -#endif
> > +#endif /* !MODULE */
> >
> > #ifdef CONFIG_HOTPLUG
> > #define __devinit
> > @@ -153,6 +153,18 @@ typedef void (*__cleanup_module_func_t)(
> > #define __devinitdata __initdata
> > #define __devexit __exit
> > #define __devexitdata __exitdata
> > +#endif
> > +
> > +/* Functions marked as __devexit may be discarded at kernel link time, depending
> > + on config options. Newer versions of binutils detect references from
> > + retained sections to discarded sections and flag an error. Pointers to
> > + __devexit functions must use __devexit_p(function_name), the wrapper will
> > + insert either the function_name or NULL, depending on the config options.
> > + */
> > +#if defined(MODULE) || defined(CONFIG_HOTPLUG)
> > +#define __devexit_p(x) x
> > +#else
> > +#define __devexit_p(x) NULL
> > #endif
> >
> > #endif /* _LINUX_INIT_H */
> > Index: 16.1/drivers/media/video/bttv-driver.c
> > --- 16.1/drivers/media/video/bttv-driver.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/t/b/47_bttv-drive 1.3.1.1.1.2.1.1.1.1.1.2 644)
> > +++ 16.1(w)/drivers/media/video/bttv-driver.c Thu, 06 Dec 2001 16:30:16 +1100 kaos (linux-2.4/t/b/47_bttv-drive 1.3.1.1.1.2.1.1.1.1.1.2 644)
> > @@ -3025,7 +3025,7 @@ static struct pci_driver bttv_pci_driver
> > name: "bttv",
> > id_table: bttv_pci_tbl,
> > probe: bttv_probe,
> > - remove: bttv_remove,
> > + remove: __devexit_p(bttv_remove),
> > };
> >
> > int bttv_init_module(void)
> > Index: 16.1/drivers/ieee1394/ohci1394.c
> > --- 16.1/drivers/ieee1394/ohci1394.c Thu, 04 Oct 2001 16:23:36 +1000 kaos (linux-2.4/v/b/2_ohci1394.c 1.1.1.1.1.3.1.3.1.2 644)
> > +++ 16.1(w)/drivers/ieee1394/ohci1394.c Thu, 06 Dec 2001 17:12:55 +1100 kaos (linux-2.4/v/b/2_ohci1394.c 1.1.1.1.1.3.1.3.1.2 644)
> > @@ -2423,7 +2423,7 @@ static struct pci_driver ohci1394_driver
> > name: OHCI1394_DRIVER_NAME,
> > id_table: ohci1394_pci_tbl,
> > probe: ohci1394_add_one,
> > - remove: ohci1394_remove_one,
> > + remove: __devexit_p(ohci1394_remove_one),
> > };
> >
> > static void __exit ohci1394_cleanup (void)
> > Index: 16.1/drivers/pcmcia/pci_socket.c
> > --- 16.1/drivers/pcmcia/pci_socket.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/v/b/38_pci_socket 1.1.1.3 644)
> > +++ 16.1(w)/drivers/pcmcia/pci_socket.c Thu, 06 Dec 2001 16:40:06 +1100 kaos (linux-2.4/v/b/38_pci_socket 1.1.1.3 644)
> > @@ -249,7 +249,7 @@ static struct pci_driver pci_cardbus_dri
> > name: "cardbus",
> > id_table: cardbus_table,
> > probe: cardbus_probe,
> > - remove: cardbus_remove,
> > + remove: __devexit_p(cardbus_remove),
> > suspend: cardbus_suspend,
> > resume: cardbus_resume,
> > };
> > Index: 16.1/drivers/atm/firestream.c
> > --- 16.1/drivers/atm/firestream.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/w/b/32_firestream 1.2.1.5.1.1 644)
> > +++ 16.1(w)/drivers/atm/firestream.c Thu, 06 Dec 2001 16:18:40 +1100 kaos (linux-2.4/w/b/32_firestream 1.2.1.5.1.1 644)
> > @@ -2102,7 +2102,7 @@ static struct pci_driver firestream_driv
> > name: "firestream",
> > id_table: firestream_pci_tbl,
> > probe: firestream_init_one,
> > - remove: firestream_remove_one,
> > + remove: __devexit_p(firestream_remove_one),
> > };
> >
> > static int __init firestream_init_module (void)
> > Index: 16.1/drivers/atm/eni.c
> > --- 16.1/drivers/atm/eni.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/x/b/10_eni.c 1.1.1.1.1.2.1.1 644)
> > +++ 16.1(w)/drivers/atm/eni.c Thu, 06 Dec 2001 16:18:19 +1100 kaos (linux-2.4/x/b/10_eni.c 1.1.1.1.1.2.1.1 644)
> > @@ -2310,7 +2310,7 @@ static struct pci_driver eni_driver = {
> > name: DEV_LABEL,
> > id_table: eni_pci_tbl,
> > probe: eni_init_one,
> > - remove: eni_remove_one,
> > + remove: __devexit_p(eni_remove_one),
> > };
> >
> >
> > Index: 16.1/drivers/usb/usb-uhci.c
> > --- 16.1/drivers/usb/usb-uhci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/z/b/2_usb-uhci.c 1.2.1.1.1.16 644)
> > +++ 16.1(w)/drivers/usb/usb-uhci.c Thu, 06 Dec 2001 16:43:12 +1100 kaos (linux-2.4/z/b/2_usb-uhci.c 1.2.1.1.1.16 644)
> > @@ -3070,7 +3070,7 @@ static struct pci_driver uhci_pci_driver
> > id_table: &uhci_pci_ids [0],
> >
> > probe: uhci_pci_probe,
> > - remove: uhci_pci_remove,
> > + remove: __devexit_p(uhci_pci_remove),
> >
> > #ifdef CONFIG_PM
> > suspend: uhci_pci_suspend,
> > Index: 16.1/drivers/usb/uhci.c
> > --- 16.1/drivers/usb/uhci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/z/b/4_uhci.c 1.1.2.1.2.1.2.3.1.12 644)
> > +++ 16.1(w)/drivers/usb/uhci.c Thu, 06 Dec 2001 16:41:09 +1100 kaos (linux-2.4/z/b/4_uhci.c 1.1.2.1.2.1.2.3.1.12 644)
> > @@ -2990,7 +2990,7 @@ static struct pci_driver uhci_pci_driver
> > id_table: uhci_pci_ids,
> >
> > probe: uhci_pci_probe,
> > - remove: uhci_pci_remove,
> > + remove: __devexit_p(uhci_pci_remove),
> >
> > #ifdef CONFIG_PM
> > suspend: uhci_pci_suspend,
> > Index: 16.1/drivers/usb/usb-ohci.c
> > --- 16.1/drivers/usb/usb-ohci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/z/b/28_usb-ohci.c 1.2.1.2.1.6.1.3.2.3.2.2 644)
> > +++ 16.1(w)/drivers/usb/usb-ohci.c Thu, 06 Dec 2001 16:40:58 +1100 kaos (linux-2.4/z/b/28_usb-ohci.c 1.2.1.2.1.6.1.3.2.3.2.2 644)
> > @@ -2860,7 +2860,7 @@ static struct pci_driver ohci_pci_driver
> > id_table: &ohci_pci_ids [0],
> >
> > probe: ohci_pci_probe,
> > - remove: ohci_pci_remove,
> > + remove: __devexit_p(ohci_pci_remove),
> >
> > #ifdef CONFIG_PM
> > suspend: ohci_pci_suspend,
> > Index: 16.1/drivers/video/tdfxfb.c
> > --- 16.1/drivers/video/tdfxfb.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/C/b/37_tdfxfb.c 1.2.2.1.1.1.1.1.1.5 644)
> > +++ 16.1(w)/drivers/video/tdfxfb.c Thu, 06 Dec 2001 16:44:21 +1100 kaos (linux-2.4/C/b/37_tdfxfb.c 1.2.2.1.1.1.1.1.1.5 644)
> > @@ -495,7 +495,7 @@ static struct pci_driver tdfxfb_driver =
> > name: "tdfxfb",
> > id_table: tdfxfb_id_table,
> > probe: tdfxfb_probe,
> > - remove: tdfxfb_remove,
> > + remove: __devexit_p(tdfxfb_remove),
> > };
> >
> > MODULE_DEVICE_TABLE(pci, tdfxfb_id_table);
> > Index: 16.1/drivers/video/riva/fbdev.c
> > --- 16.1/drivers/video/riva/fbdev.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/C/b/45_fbdev.c 1.5.1.4 644)
> > +++ 16.1(w)/drivers/video/riva/fbdev.c Thu, 06 Dec 2001 16:43:24 +1100 kaos (linux-2.4/C/b/45_fbdev.c 1.5.1.4 644)
> > @@ -2082,7 +2082,7 @@ static struct pci_driver rivafb_driver =
> > name: "rivafb",
> > id_table: rivafb_pci_tbl,
> > probe: rivafb_init_one,
> > - remove: rivafb_remove_one,
> > + remove: __devexit_p(rivafb_remove_one),
> > };
> >
> >
> > Index: 16.1/drivers/video/cyber2000fb.c
> > --- 16.1/drivers/video/cyber2000fb.c Fri, 26 Oct 2001 15:50:03 +1000 kaos (linux-2.4/D/b/3_cyber2000f 1.2.2.2.1.1.1.2.1.2 644)
> > +++ 16.1(w)/drivers/video/cyber2000fb.c Thu, 06 Dec 2001 16:43:34 +1100 kaos (linux-2.4/D/b/3_cyber2000f 1.2.2.2.1.1.1.2.1.2 644)
> > @@ -1683,7 +1683,7 @@ static struct pci_device_id cyberpro_pci
> > static struct pci_driver cyberpro_driver = {
> > name: "CyberPro",
> > probe: cyberpro_probe,
> > - remove: cyberpro_remove,
> > + remove: __devexit_p(cyberpro_remove),
> > suspend: cyberpro_suspend,
> > resume: cyberpro_resume,
> > id_table: cyberpro_pci_table
> > Index: 16.1/drivers/video/imsttfb.c
> > --- 16.1/drivers/video/imsttfb.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/D/b/42_imsttfb.c 1.2.2.1.1.3.1.1.1.3 644)
> > +++ 16.1(w)/drivers/video/imsttfb.c Thu, 06 Dec 2001 16:43:51 +1100 kaos (linux-2.4/D/b/42_imsttfb.c 1.2.2.1.1.3.1.1.1.3 644)
> > @@ -1643,7 +1643,7 @@ static struct pci_driver imsttfb_pci_dri
> > name: "imsttfb",
> > id_table: imsttfb_pci_tbl,
> > probe: imsttfb_probe,
> > - remove: imsttfb_remove,
> > + remove: __devexit_p(imsttfb_remove),
> > };
> >
> > static struct fb_ops imsttfb_ops = {
> > Index: 16.1/drivers/sound/ymfpci.c
> > --- 16.1/drivers/sound/ymfpci.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/L/b/45_ymfpci.c 1.4.1.9.1.1.1.2.1.3 644)
> > +++ 16.1(w)/drivers/sound/ymfpci.c Thu, 06 Dec 2001 16:40:39 +1100 kaos (linux-2.4/L/b/45_ymfpci.c 1.4.1.9.1.1.1.2.1.3 644)
> > @@ -2547,7 +2547,7 @@ static struct pci_driver ymfpci_driver =
> > name: "ymfpci",
> > id_table: ymf_id_tbl,
> > probe: ymf_probe_one,
> > - remove: ymf_remove_one,
> > + remove: __devexit_p(ymf_remove_one),
> > suspend: ymf_suspend,
> > resume: ymf_resume
> > };
> > Index: 16.1/drivers/sound/emu10k1/main.c
> > --- 16.1/drivers/sound/emu10k1/main.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/M/b/14_main.c 1.3.1.2.1.4 644)
> > +++ 16.1(w)/drivers/sound/emu10k1/main.c Thu, 06 Dec 2001 16:40:17 +1100 kaos (linux-2.4/M/b/14_main.c 1.3.1.2.1.4 644)
> > @@ -1127,7 +1127,7 @@ static struct pci_driver emu10k1_pci_dri
> > name: "emu10k1",
> > id_table: emu10k1_pci_tbl,
> > probe: emu10k1_probe,
> > - remove: emu10k1_remove,
> > + remove: __devexit_p(emu10k1_remove),
> > };
> >
> > static int __init emu10k1_init_module(void)
> > Index: 16.1/drivers/char/joystick/pcigame.c
> > --- 16.1/drivers/char/joystick/pcigame.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/Y/b/30_pcigame.c 1.1.1.2 644)
> > +++ 16.1(w)/drivers/char/joystick/pcigame.c Thu, 06 Dec 2001 16:20:46 +1100 kaos (linux-2.4/Y/b/30_pcigame.c 1.1.1.2 644)
> > @@ -180,7 +180,7 @@ static struct pci_driver pcigame_driver
> > name: "pcigame",
> > id_table: pcigame_id_table,
> > probe: pcigame_probe,
> > - remove: pcigame_remove,
> > + remove: __devexit_p(pcigame_remove),
> > };
> >
> > int __init pcigame_init(void)
> > Index: 16.1/drivers/char/serial.c
> > --- 16.1/drivers/char/serial.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/b/c/22_serial.c 1.1.3.2.2.3.2.2.1.8.1.1 644)
> > +++ 16.1(w)/drivers/char/serial.c Thu, 06 Dec 2001 16:20:59 +1100 kaos (linux-2.4/b/c/22_serial.c 1.1.3.2.2.3.2.2.1.8.1.1 644)
> > @@ -4896,7 +4896,7 @@ MODULE_DEVICE_TABLE(pci, serial_pci_tbl)
> > static struct pci_driver serial_pci_driver = {
> > name: "serial",
> > probe: serial_init_one,
> > - remove: serial_remove_one,
> > + remove: __devexit_p(serial_remove_one),
> > id_table: serial_pci_tbl,
> > };
> >
> > Index: 16.1/drivers/block/cciss.c
> > --- 16.1/drivers/block/cciss.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/c/c/34_cciss.c 1.4.2.3.1.2.1.9 644)
> > +++ 16.1(w)/drivers/block/cciss.c Thu, 06 Dec 2001 16:19:09 +1100 kaos (linux-2.4/c/c/34_cciss.c 1.4.2.3.1.2.1.9 644)
> > @@ -2019,7 +2019,7 @@ static void __devexit cciss_remove_one (
> > static struct pci_driver cciss_pci_driver = {
> > name: "cciss",
> > probe: cciss_init_one,
> > - remove: cciss_remove_one,
> > + remove: __devexit_p(cciss_remove_one),
> > id_table: cciss_pci_device_id, /* id_table */
> > };
> >
> > Index: 16.1/drivers/net/winbond-840.c
> > --- 16.1/drivers/net/winbond-840.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/c/c/43_winbond-84 1.2.1.4.1.2.1.7 644)
> > +++ 16.1(w)/drivers/net/winbond-840.c Thu, 06 Dec 2001 16:38:34 +1100 kaos (linux-2.4/c/c/43_winbond-84 1.2.1.4.1.2.1.7 644)
> > @@ -1697,7 +1697,7 @@ static struct pci_driver w840_driver = {
> > name: DRV_NAME,
> > id_table: w840_pci_tbl,
> > probe: w840_probe1,
> > - remove: w840_remove1,
> > + remove: __devexit_p(w840_remove1),
> > #ifdef CONFIG_PM
> > suspend: w840_suspend,
> > resume: w840_resume,
> > Index: 16.1/drivers/net/sundance.c
> > --- 16.1/drivers/net/sundance.c Tue, 23 Oct 2001 14:35:33 +1000 kaos (linux-2.4/c/c/44_sundance.c 1.2.1.10.1.2 644)
> > +++ 16.1(w)/drivers/net/sundance.c Thu, 06 Dec 2001 16:38:48 +1100 kaos (linux-2.4/c/c/44_sundance.c 1.2.1.10.1.2 644)
> > @@ -1474,7 +1474,7 @@ static struct pci_driver sundance_driver
> > name: DRV_NAME,
> > id_table: sundance_pci_tbl,
> > probe: sundance_probe1,
> > - remove: sundance_remove1,
> > + remove: __devexit_p(sundance_remove1),
> > };
> >
> > static int __init sundance_init(void)
> > Index: 16.1/drivers/net/natsemi.c
> > --- 16.1/drivers/net/natsemi.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/c/c/45_natsemi.c 1.3.1.8.1.1.1.6 644)
> > +++ 16.1(w)/drivers/net/natsemi.c Thu, 06 Dec 2001 16:37:32 +1100 kaos (linux-2.4/c/c/45_natsemi.c 1.3.1.8.1.1.1.6 644)
> > @@ -2518,7 +2518,7 @@ static struct pci_driver natsemi_driver
> > name: DRV_NAME,
> > id_table: natsemi_pci_tbl,
> > probe: natsemi_probe1,
> > - remove: natsemi_remove1,
> > + remove: __devexit_p(natsemi_remove1),
> > #ifdef CONFIG_PM
> > suspend: natsemi_suspend,
> > resume: natsemi_resume,
> > Index: 16.1/drivers/net/pcmcia/xircom_tulip_cb.c
> > --- 16.1/drivers/net/pcmcia/xircom_tulip_cb.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/d/c/16_xircom_tul 1.4.1.8 644)
> > +++ 16.1(w)/drivers/net/pcmcia/xircom_tulip_cb.c Thu, 06 Dec 2001 16:32:03 +1100 kaos (linux-2.4/d/c/16_xircom_tul 1.4.1.8 644)
> > @@ -1748,7 +1748,7 @@ static struct pci_driver xircom_driver =
> > name: DRV_NAME,
> > id_table: xircom_pci_table,
> > probe: xircom_init_one,
> > - remove: xircom_remove_one,
> > + remove: __devexit_p(xircom_remove_one),
> > #ifdef CONFIG_PM
> > suspend: xircom_suspend,
> > resume: xircom_resume
> > Index: 16.1/drivers/net/ioc3-eth.c
> > --- 16.1/drivers/net/ioc3-eth.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/d/c/49_ioc3-eth.c 1.1.2.1.1.3.1.2.1.2 644)
> > +++ 16.1(w)/drivers/net/ioc3-eth.c Thu, 06 Dec 2001 16:36:43 +1100 kaos (linux-2.4/d/c/49_ioc3-eth.c 1.1.2.1.1.3.1.2.1.2 644)
> > @@ -1515,7 +1515,7 @@ static struct pci_driver ioc3_driver = {
> > name: "ioc3-eth",
> > id_table: ioc3_pci_tbl,
> > probe: ioc3_probe,
> > - remove: ioc3_remove_one,
> > + remove: __devexit_p(ioc3_remove_one),
> > };
> >
> > static int __init ioc3_init_module(void)
> > Index: 16.1/drivers/net/tulip/tulip_core.c
> > --- 16.1/drivers/net/tulip/tulip_core.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/e/c/6_tulip_core 1.1.1.1.1.1.2.3.1.3.1.12 644)
> > +++ 16.1(w)/drivers/net/tulip/tulip_core.c Thu, 06 Dec 2001 16:33:01 +1100 kaos (linux-2.4/e/c/6_tulip_core 1.1.1.1.1.1.2.3.1.3.1.12 644)
> > @@ -1889,7 +1889,7 @@ static struct pci_driver tulip_driver =
> > name: DRV_NAME,
> > id_table: tulip_pci_tbl,
> > probe: tulip_init_one,
> > - remove: tulip_remove_one,
> > + remove: __devexit_p(tulip_remove_one),
> > #ifdef CONFIG_PM
> > suspend: tulip_suspend,
> > resume: tulip_resume,
> > Index: 16.1/drivers/net/8139too.c
> > --- 16.1/drivers/net/8139too.c Tue, 27 Nov 2001 11:15:00 +1100 kaos (linux-2.4/f/c/30_8139too.c 1.2.1.5.1.1.1.5.1.7 644)
> > +++ 16.1(w)/drivers/net/8139too.c Thu, 06 Dec 2001 16:34:18 +1100 kaos (linux-2.4/f/c/30_8139too.c 1.2.1.5.1.1.1.5.1.7 644)
> > @@ -2493,7 +2493,7 @@ static struct pci_driver rtl8139_pci_dri
> > name: DRV_NAME,
> > id_table: rtl8139_pci_tbl,
> > probe: rtl8139_init_one,
> > - remove: rtl8139_remove_one,
> > + remove: __devexit_p(rtl8139_remove_one),
> > #ifdef CONFIG_PM
> > suspend: rtl8139_suspend,
> > resume: rtl8139_resume,
> > Index: 16.1/drivers/net/ne2k-pci.c
> > --- 16.1/drivers/net/ne2k-pci.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/f/c/42_ne2k-pci.c 1.3.1.1.1.1.1.1 644)
> > +++ 16.1(w)/drivers/net/ne2k-pci.c Thu, 06 Dec 2001 16:37:42 +1100 kaos (linux-2.4/f/c/42_ne2k-pci.c 1.3.1.1.1.1.1.1 644)
> > @@ -642,7 +642,7 @@ static void __devexit ne2k_pci_remove_on
> > static struct pci_driver ne2k_driver = {
> > name: DRV_NAME,
> > probe: ne2k_pci_init_one,
> > - remove: ne2k_pci_remove_one,
> > + remove: __devexit_p(ne2k_pci_remove_one),
> > id_table: ne2k_pci_tbl,
> > };
> >
> > Index: 16.1/drivers/net/epic100.c
> > --- 16.1/drivers/net/epic100.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/f/c/43_epic100.c 1.2.1.4.1.2.1.2.1.3 644)
> > +++ 16.1(w)/drivers/net/epic100.c Thu, 06 Dec 2001 16:36:13 +1100 kaos (linux-2.4/f/c/43_epic100.c 1.2.1.4.1.2.1.2.1.3 644)
> > @@ -1507,7 +1507,7 @@ static struct pci_driver epic_driver = {
> > name: DRV_NAME,
> > id_table: epic_pci_tbl,
> > probe: epic_init_one,
> > - remove: epic_remove_one,
> > + remove: __devexit_p(epic_remove_one),
> > #ifdef CONFIG_PM
> > suspend: epic_suspend,
> > resume: epic_resume,
> > Index: 16.1/drivers/net/arcnet/com20020-pci.c
> > --- 16.1/drivers/net/arcnet/com20020-pci.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/h/c/3_com20020-p 1.2.1.1.1.3 644)
> > +++ 16.1(w)/drivers/net/arcnet/com20020-pci.c Thu, 06 Dec 2001 16:30:57 +1100 kaos (linux-2.4/h/c/3_com20020-p 1.2.1.1.1.3 644)
> > @@ -160,7 +160,7 @@ static struct pci_driver com20020pci_dri
> > name: "com20020",
> > id_table: com20020pci_id_table,
> > probe: com20020pci_probe,
> > - remove: com20020pci_remove
> > + remove: __devexit_p(com20020pci_remove),
> > };
> >
> > static int __init com20020pci_init(void)
> > Index: 16.1/drivers/net/sis900.c
> > --- 16.1/drivers/net/sis900.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/h/c/13_sis900.c 1.3.1.11.1.3 644)
> > +++ 16.1(w)/drivers/net/sis900.c Thu, 06 Dec 2001 16:38:10 +1100 kaos (linux-2.4/h/c/13_sis900.c 1.3.1.11.1.3 644)
> > @@ -2098,7 +2098,7 @@ static struct pci_driver sis900_pci_driv
> > name: SIS900_MODULE_NAME,
> > id_table: sis900_pci_tbl,
> > probe: sis900_probe,
> > - remove: sis900_remove,
> > + remove: __devexit_p(sis900_remove),
> > };
> >
> > static int __init sis900_init_module(void)
> > Index: 16.1/drivers/net/yellowfin.c
> > --- 16.1/drivers/net/yellowfin.c Tue, 23 Oct 2001 14:35:33 +1000 kaos (linux-2.4/h/c/17_yellowfin. 1.1.1.3.1.8.1.1 644)
> > +++ 16.1(w)/drivers/net/yellowfin.c Thu, 06 Dec 2001 16:39:33 +1100 kaos (linux-2.4/h/c/17_yellowfin. 1.1.1.3.1.8.1.1 644)
> > @@ -1506,7 +1506,7 @@ static struct pci_driver yellowfin_drive
> > name: DRV_NAME,
> > id_table: yellowfin_pci_tbl,
> > probe: yellowfin_init_one,
> > - remove: yellowfin_remove_one,
> > + remove: __devexit_p(yellowfin_remove_one),
> > };
> >
> >
> > Index: 16.1/drivers/net/via-rhine.c
> > --- 16.1/drivers/net/via-rhine.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/h/c/19_via-rhine. 1.1.1.4.1.2.1.3.1.2.1.1.1.1 644)
> > +++ 16.1(w)/drivers/net/via-rhine.c Thu, 06 Dec 2001 16:39:20 +1100 kaos (linux-2.4/h/c/19_via-rhine. 1.1.1.4.1.2.1.3.1.2.1.1.1.1 644)
> > @@ -1667,7 +1667,7 @@ static struct pci_driver via_rhine_drive
> > name: "via-rhine",
> > id_table: via_rhine_pci_tbl,
> > probe: via_rhine_init_one,
> > - remove: via_rhine_remove_one,
> > + remove: __devexit_p(via_rhine_remove_one),
> > };
> >
> >
> > Index: 16.1/drivers/net/starfire.c
> > --- 16.1/drivers/net/starfire.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/h/c/22_starfire.c 1.1.1.9.1.3 644)
> > +++ 16.1(w)/drivers/net/starfire.c Thu, 06 Dec 2001 16:38:22 +1100 kaos (linux-2.4/h/c/22_starfire.c 1.1.1.9.1.3 644)
> > @@ -1963,7 +1963,7 @@ static void __devexit starfire_remove_on
> > static struct pci_driver starfire_driver = {
> > name: DRV_NAME,
> > probe: starfire_init_one,
> > - remove: starfire_remove_one,
> > + remove: __devexit_p(starfire_remove_one),
> > id_table: starfire_pci_tbl,
> > };
> >
> > Index: 16.1/drivers/net/eepro100.c
> > --- 16.1/drivers/net/eepro100.c Tue, 13 Nov 2001 08:45:38 +1100 kaos (linux-2.4/h/c/27_eepro100.c 1.1.1.1.1.2.6.4.2.4 644)
> > +++ 16.1(w)/drivers/net/eepro100.c Thu, 06 Dec 2001 16:36:00 +1100 kaos (linux-2.4/h/c/27_eepro100.c 1.1.1.1.1.2.6.4.2.4 644)
> > @@ -2281,7 +2281,7 @@ static struct pci_driver eepro100_driver
> > name: "eepro100",
> > id_table: eepro100_pci_tbl,
> > probe: eepro100_init_one,
> > - remove: eepro100_remove_one,
> > + remove: __devexit_p(eepro100_remove_one),
> > #ifdef CONFIG_PM
> > suspend: eepro100_suspend,
> > resume: eepro100_resume,
> > Index: 16.1/drivers/net/defxx.c
> > --- 16.1/drivers/net/defxx.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/h/c/40_defxx.c 1.2.1.4.1.3.1.1 644)
> > +++ 16.1(w)/drivers/net/defxx.c Thu, 06 Dec 2001 16:35:16 +1100 kaos (linux-2.4/h/c/40_defxx.c 1.2.1.4.1.3.1.1 644)
> > @@ -3360,7 +3360,7 @@ MODULE_DEVICE_TABLE(pci, dfx_pci_tbl);
> > static struct pci_driver dfx_driver = {
> > name: "defxx",
> > probe: dfx_init_one,
> > - remove: dfx_remove_one,
> > + remove: __devexit_p(dfx_remove_one),
> > id_table: dfx_pci_tbl,
> > };
> >
> > Index: 16.1/drivers/net/tokenring/lanstreamer.c
> > --- 16.1/drivers/net/tokenring/lanstreamer.c Mon, 12 Nov 2001 11:34:37 +1100 kaos (linux-2.4/i/c/46_lanstreame 1.3.1.1.1.2.1.3 644)
> > +++ 16.1(w)/drivers/net/tokenring/lanstreamer.c Thu, 06 Dec 2001 16:32:35 +1100 kaos (linux-2.4/i/c/46_lanstreame 1.3.1.1.1.2.1.3 644)
> > @@ -1812,7 +1812,7 @@ static struct pci_driver streamer_pci_dr
> > name: "lanstreamer",
> > id_table: streamer_pci_tbl,
> > probe: streamer_init_one,
> > - remove: streamer_remove_one,
> > + remove: __devexit_p(streamer_remove_one),
> > };
> >
> > static int __init streamer_init_module(void) {
> > Index: 16.1/drivers/net/tokenring/olympic.c
> > --- 16.1/drivers/net/tokenring/olympic.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/j/c/7_olympic.c 1.2.1.2.1.2.1.1.1.1.1.1 644)
> > +++ 16.1(w)/drivers/net/tokenring/olympic.c Thu, 06 Dec 2001 16:32:48 +1100 kaos (linux-2.4/j/c/7_olympic.c 1.2.1.2.1.2.1.1.1.1.1.1 644)
> > @@ -1705,7 +1705,7 @@ static struct pci_driver olympic_driver
> > name: "olympic",
> > id_table: olympic_pci_tbl,
> > probe: olympic_probe,
> > - remove: olympic_remove_one
> > + remove: __devexit_p(olympic_remove_one),
> > };
> >
> > static int __init olympic_pci_init(void)
> > Index: 16.1/drivers/net/3c59x.c
> > --- 16.1/drivers/net/3c59x.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/j/c/16_3c59x.c 1.3.1.8 644)
> > +++ 16.1(w)/drivers/net/3c59x.c Thu, 06 Dec 2001 16:34:31 +1100 kaos (linux-2.4/j/c/16_3c59x.c 1.3.1.8 644)
> > @@ -2919,7 +2919,7 @@ static void __devexit vortex_remove_one
> > static struct pci_driver vortex_driver = {
> > name: "3c59x",
> > probe: vortex_init_one,
> > - remove: vortex_remove_one,
> > + remove: __devexit_p(vortex_remove_one),
> > id_table: vortex_pci_tbl,
> > #ifdef CONFIG_PM
> > suspend: vortex_suspend,
> > Index: 16.1/drivers/net/tlan.c
> > --- 16.1/drivers/net/tlan.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/l/c/11_tlan.c 1.1.1.2.1.3.1.1 644)
> > +++ 16.1(w)/drivers/net/tlan.c Thu, 06 Dec 2001 16:39:11 +1100 kaos (linux-2.4/l/c/11_tlan.c 1.1.1.2.1.3.1.1 644)
> > @@ -430,7 +430,7 @@ static struct pci_driver tlan_driver = {
> > name: "tlan",
> > id_table: tlan_pci_tbl,
> > probe: tlan_init_one,
> > - remove: tlan_remove_one,
> > + remove: __devexit_p(tlan_remove_one),
> > };
> >
> > static int __init tlan_probe(void)
> > Index: 16.1/drivers/net/pci-skeleton.c
> > --- 16.1/drivers/net/pci-skeleton.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/q/d/47_pci-skelet 1.1.1.7.1.4 644)
> > +++ 16.1(w)/drivers/net/pci-skeleton.c Thu, 06 Dec 2001 16:37:20 +1100 kaos (linux-2.4/q/d/47_pci-skelet 1.1.1.7.1.4 644)
> > @@ -1980,7 +1980,7 @@ static struct pci_driver netdrv_pci_driv
> > name: MODNAME,
> > id_table: netdrv_pci_tbl,
> > probe: netdrv_init_one,
> > - remove: netdrv_remove_one,
> > + remove: __devexit_p(netdrv_remove_one),
> > #ifdef CONFIG_PM
> > suspend: netdrv_suspend,
> > resume: netdrv_resume,
> > Index: 16.1/drivers/media/radio/radio-maxiradio.c
> > --- 16.1/drivers/media/radio/radio-maxiradio.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/x/d/25_radio-maxi 1.1.1.1.1.1 644)
> > +++ 16.1(w)/drivers/media/radio/radio-maxiradio.c Thu, 06 Dec 2001 16:27:50 +1100 kaos (linux-2.4/x/d/25_radio-maxi 1.1.1.1.1.1 644)
> > @@ -376,7 +376,7 @@ static struct pci_driver maxiradio_drive
> > name: "radio-maxiradio",
> > id_table: maxiradio_pci_tbl,
> > probe: maxiradio_init_one,
> > - remove: maxiradio_remove_one,
> > + remove: __devexit_p(maxiradio_remove_one),
> > };
> >
> > int __init maxiradio_radio_init(void)
> > Index: 16.1/drivers/net/sungem.c
> > --- 16.1/drivers/net/sungem.c Tue, 23 Oct 2001 14:35:33 +1000 kaos (linux-2.4/E/d/26_sungem.c 1.6.1.6 644)
> > +++ 16.1(w)/drivers/net/sungem.c Thu, 06 Dec 2001 16:38:58 +1100 kaos (linux-2.4/E/d/26_sungem.c 1.6.1.6 644)
> > @@ -2140,7 +2140,7 @@ static struct pci_driver gem_driver = {
> > name: GEM_MODULE_NAME,
> > id_table: gem_pci_tbl,
> > probe: gem_init_one,
> > - remove: gem_remove_one,
> > + remove: __devexit_p(gem_remove_one),
> > };
> >
> > static int __init gem_init(void)
> > Index: 16.1/drivers/char/joystick/cs461x.c
> > --- 16.1/drivers/char/joystick/cs461x.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/K/d/4_cs461x.c 1.1.1.2 644)
> > +++ 16.1(w)/drivers/char/joystick/cs461x.c Thu, 06 Dec 2001 16:19:42 +1100 kaos (linux-2.4/K/d/4_cs461x.c 1.1.1.2 644)
> > @@ -313,7 +313,7 @@ static struct pci_driver cs461x_pci_driv
> > name: "PCI Gameport",
> > id_table: cs461x_pci_tbl,
> > probe: cs461x_pci_probe,
> > - remove: cs461x_pci_remove,
> > + remove: __devexit_p(cs461x_pci_remove),
> > };
> >
> > int __init js_cs461x_init(void)
> > Index: 16.1/drivers/net/fealnx.c
> > --- 16.1/drivers/net/fealnx.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/i/e/0_fealnx.c 1.2.1.7 644)
> > +++ 16.1(w)/drivers/net/fealnx.c Thu, 06 Dec 2001 16:36:32 +1100 kaos (linux-2.4/i/e/0_fealnx.c 1.2.1.7 644)
> > @@ -1858,7 +1858,7 @@ static struct pci_driver fealnx_driver =
> > name: "fealnx",
> > id_table: fealnx_pci_tbl,
> > probe: fealnx_init_one,
> > - remove: fealnx_remove_one,
> > + remove: __devexit_p(fealnx_remove_one),
> > };
> >
> > static int __init fealnx_init(void)
> > Index: 16.1/drivers/net/wireless/airo.c
> > --- 16.1/drivers/net/wireless/airo.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/w/e/24_airo.c 1.2.1.8 644)
> > +++ 16.1(w)/drivers/net/wireless/airo.c Thu, 06 Dec 2001 16:34:04 +1100 kaos (linux-2.4/w/e/24_airo.c 1.2.1.8 644)
> > @@ -64,7 +64,7 @@ static struct pci_driver airo_driver = {
> > name: "airo",
> > id_table: card_ids,
> > probe: airo_pci_probe,
> > - remove: airo_pci_remove,
> > + remove: __devexit_p(airo_pci_remove),
> > };
> > #endif /* CONFIG_PCI */
> >
> > Index: 16.1/drivers/isdn/tpam/tpam_main.c
> > --- 16.1/drivers/isdn/tpam/tpam_main.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/D/e/29_tpam_main. 1.1.1.1.1.1 644)
> > +++ 16.1(w)/drivers/isdn/tpam/tpam_main.c Thu, 06 Dec 2001 16:27:11 +1100 kaos (linux-2.4/D/e/29_tpam_main. 1.1.1.1.1.1 644)
> > @@ -254,7 +254,7 @@ static struct pci_driver tpam_driver = {
> > name: "tpam",
> > id_table: tpam_pci_tbl,
> > probe: tpam_probe,
> > - remove: tpam_remove,
> > + remove: __devexit_p(tpam_remove),
> > };
> >
> > static int __init tpam_init(void) {
> > Index: 16.1/drivers/media/video/meye.c
> > --- 16.1/drivers/media/video/meye.c Fri, 26 Oct 2001 15:50:03 +1000 kaos (linux-2.4/G/e/0_meye.c 1.2.1.1.1.1 644)
> > +++ 16.1(w)/drivers/media/video/meye.c Thu, 06 Dec 2001 16:30:30 +1100 kaos (linux-2.4/G/e/0_meye.c 1.2.1.1.1.1 644)
> > @@ -1460,7 +1460,7 @@ static struct pci_driver meye_driver = {
> > name: "meye",
> > id_table: meye_pci_tbl,
> > probe: meye_probe,
> > - remove: meye_remove,
> > + remove: __devexit_p(meye_remove),
> > };
> >
> > static int __init meye_init_module(void) {
> > Index: 16.1/drivers/net/dl2k.c
> > --- 16.1/drivers/net/dl2k.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/G/e/43_dl2k.c 1.6 644)
> > +++ 16.1(w)/drivers/net/dl2k.c Thu, 06 Dec 2001 16:35:35 +1100 kaos (linux-2.4/G/e/43_dl2k.c 1.6 644)
> > @@ -1671,7 +1671,7 @@ static struct pci_driver rio_driver = {
> > name:"dl2k",
> > id_table:rio_pci_tbl,
> > probe:rio_probe1,
> > - remove:rio_remove1,
> > + remove:__devexit_p(rio_remove1),
> > };
> >
> > static int __init
> > Index: 16.1/drivers/parport/parport_serial.c
> > --- 16.1/drivers/parport/parport_serial.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/G/e/47_parport_se 1.5 644)
> > +++ 16.1(w)/drivers/parport/parport_serial.c Thu, 06 Dec 2001 16:39:45 +1100 kaos (linux-2.4/G/e/47_parport_se 1.5 644)
> > @@ -331,7 +331,7 @@ static struct pci_driver parport_serial_
> > name: "parport_serial",
> > id_table: parport_serial_pci_tbl,
> > probe: parport_serial_pci_probe,
> > - remove: parport_serial_pci_remove,
> > + remove: __devexit_p(parport_serial_pci_remove),
> > };
> >
> >
> > Index: 16.1/drivers/media/radio/radio-gemtek-pci.c
> > --- 16.1/drivers/media/radio/radio-gemtek-pci.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/L/e/51_radio-gemt 1.1.1.1 644)
> > +++ 16.1(w)/drivers/media/radio/radio-gemtek-pci.c Thu, 06 Dec 2001 16:27:38 +1100 kaos (linux-2.4/L/e/51_radio-gemt 1.1.1.1 644)
> > @@ -424,7 +424,7 @@ static struct pci_driver gemtek_pci_driv
> > name: "gemtek_pci",
> > id_table: gemtek_pci_id,
> > probe: gemtek_pci_probe,
> > - remove: gemtek_pci_remove
> > + remove: __devexit_p(gemtek_pci_remove),
> > };
> >
> > static int __init gemtek_pci_init_module( void )
> > Index: 16.1/drivers/sound/btaudio.c
> > --- 16.1/drivers/sound/btaudio.c Fri, 19 Oct 2001 12:25:53 +1000 kaos (linux-2.4/Q/e/39_btaudio.c 1.4.1.1 644)
> > +++ 16.1(w)/drivers/sound/btaudio.c Thu, 06 Dec 2001 16:40:28 +1100 kaos (linux-2.4/Q/e/39_btaudio.c 1.4.1.1 644)
> > @@ -1030,7 +1030,7 @@ static struct pci_driver btaudio_pci_dri
> > name: "btaudio",
> > id_table: btaudio_pci_tbl,
> > probe: btaudio_probe,
> > - remove: btaudio_remove,
> > + remove: __devexit_p(btaudio_remove),
> > };
> >
> > int btaudio_init_module(void)
> > Index: 16.1/drivers/net/wan/farsync.c
> > --- 16.1/drivers/net/wan/farsync.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/Q/e/42_farsync.c 1.1.1.2.1.1 644)
> > +++ 16.1(w)/drivers/net/wan/farsync.c Thu, 06 Dec 2001 16:33:16 +1100 kaos (linux-2.4/Q/e/42_farsync.c 1.1.1.2.1.1 644)
> > @@ -1810,7 +1810,7 @@ static struct pci_driver fst_driver = {
> > name: FST_NAME,
> > id_table: fst_pci_dev_id,
> > probe: fst_add_one,
> > - remove: fst_remove_one,
> > + remove: __devexit_p(fst_remove_one),
> > suspend: NULL,
> > resume: NULL,
> > };
> > Index: 16.1/drivers/net/irda/vlsi_ir.c
> > --- 16.1/drivers/net/irda/vlsi_ir.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/Q/e/43_vlsi_ir.c 1.6 644)
> > +++ 16.1(w)/drivers/net/irda/vlsi_ir.c Thu, 06 Dec 2001 16:31:41 +1100 kaos (linux-2.4/Q/e/43_vlsi_ir.c 1.6 644)
> > @@ -1291,7 +1291,7 @@ static struct pci_driver vlsi_irda_drive
> > name: drivername,
> > id_table: vlsi_irda_table,
> > probe: vlsi_irda_probe,
> > - remove: vlsi_irda_remove,
> > + remove: __devexit_p(vlsi_irda_remove),
> > suspend: vlsi_irda_suspend,
> > resume: vlsi_irda_resume,
> > };
> > Index: 16.1/drivers/video/radeonfb.c
> > --- 16.1/drivers/video/radeonfb.c Fri, 16 Nov 2001 14:10:23 +1100 kaos (linux-2.4/i/f/9_radeonfb.c 1.6 644)
> > +++ 16.1(w)/drivers/video/radeonfb.c Thu, 06 Dec 2001 16:44:08 +1100 kaos (linux-2.4/i/f/9_radeonfb.c 1.6 644)
> > @@ -619,7 +619,7 @@ static struct pci_driver radeonfb_driver
> > name: "radeonfb",
> > id_table: radeonfb_pci_table,
> > probe: radeonfb_pci_register,
> > - remove: radeonfb_pci_unregister,
> > + remove: __devexit_p(radeonfb_pci_unregister),
> > };
> >
> >
> > Index: 16.1/drivers/isdn/hisax/st5481_init.c
> > --- 16.1/drivers/isdn/hisax/st5481_init.c Tue, 02 Oct 2001 11:04:33 +1000 kaos (linux-2.4/l/f/11_st5481_ini 1.2 644)
> > +++ 16.1(w)/drivers/isdn/hisax/st5481_init.c Thu, 06 Dec 2001 16:25:59 +1100 kaos (linux-2.4/l/f/11_st5481_ini 1.2 644)
> > @@ -178,7 +178,7 @@ MODULE_DEVICE_TABLE (usb, st5481_ids);
> > static struct usb_driver st5481_usb_driver = {
> > name: "st5481_usb",
> > probe: probe_st5481,
> > - disconnect: disconnect_st5481,
> > + disconnect: __devexit_p(disconnect_st5481),
> > id_table: st5481_ids,
> > };
> >
> > Index: 16.1/drivers/net/ns83820.c
> > --- 16.1/drivers/net/ns83820.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/l/f/32_ns83820.c 1.6 644)
> > +++ 16.1(w)/drivers/net/ns83820.c Thu, 06 Dec 2001 16:37:57 +1100 kaos (linux-2.4/l/f/32_ns83820.c 1.6 644)
> > @@ -1455,7 +1455,7 @@ static struct pci_driver driver = {
> > name: "ns83820",
> > id_table: ns83820_pci_tbl,
> > probe: ns83820_init_one,
> > - remove: ns83820_remove_one,
> > + remove: __devexit_p(ns83820_remove_one),
> > #if 0 /* FIXME: implement */
> > suspend: ,
> > resume: ,
> > Index: 16.1/drivers/char/joystick/emu10k1-gp.c
> > --- 16.1/drivers/char/joystick/emu10k1-gp.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/m/f/32_emu10k1-gp 1.2 644)
> > +++ 16.1(w)/drivers/char/joystick/emu10k1-gp.c Thu, 06 Dec 2001 16:20:28 +1100 kaos (linux-2.4/m/f/32_emu10k1-gp 1.2 644)
> > @@ -108,7 +108,7 @@ static struct pci_driver emu_driver = {
> > name: "Emu10k1 Gameport",
> > id_table: emu_tbl,
> > probe: emu_probe,
> > - remove: emu_remove,
> > + remove: __devexit_p(emu_remove),
> > };
> >
> > int __init emu_init(void)
> > Index: 16.1/drivers/net/pcmcia/xircom_cb.c
> > --- 16.1/drivers/net/pcmcia/xircom_cb.c Sat, 10 Nov 2001 21:05:25 +1100 kaos (linux-2.4/o/f/25_xircom_cb. 1.3 644)
> > +++ 16.1(w)/drivers/net/pcmcia/xircom_cb.c Thu, 06 Dec 2001 16:32:21 +1100 kaos (linux-2.4/o/f/25_xircom_cb. 1.3 644)
> > @@ -170,7 +170,7 @@ static struct pci_driver xircom_ops = {
> > name: "xircom_cb",
> > id_table: xircom_pci_table,
> > probe: xircom_probe,
> > - remove: xircom_remove,
> > + remove: __devexit_p(xircom_remove),
> > };
> >
> >
> > Index: 16.1/drivers/net/wireless/orinoco_plx.c
> > --- 16.1/drivers/net/wireless/orinoco_plx.c Wed, 10 Oct 2001 11:34:17 +1000 kaos (linux-2.4/r/f/46_orinoco_pl 1.1 644)
> > +++ 16.1(w)/drivers/net/wireless/orinoco_plx.c Thu, 06 Dec 2001 16:33:46 +1100 kaos (linux-2.4/r/f/46_orinoco_pl 1.1 644)
> > @@ -279,7 +279,7 @@ static struct pci_driver orinoco_plx_dri
> > name:"orinoco_plx",
> > id_table:orinoco_plx_pci_id_table,
> > probe:orinoco_plx_init_one,
> > - remove:orinoco_plx_remove_one,
> > + remove:__devexit_p(orinoco_plx_remove_one),
> > suspend:0,
> > resume:0
> > };
> > Index: 16.1/drivers/net/8139cp.c
> > --- 16.1/drivers/net/8139cp.c Tue, 20 Nov 2001 15:39:10 +1100 kaos (linux-2.4/D/f/10_8139cp.c 1.3 644)
> > +++ 16.1(w)/drivers/net/8139cp.c Thu, 06 Dec 2001 16:34:44 +1100 kaos (linux-2.4/D/f/10_8139cp.c 1.3 644)
> > @@ -1313,7 +1313,7 @@ static struct pci_driver cp_driver = {
> > name: DRV_NAME,
> > id_table: cp_pci_tbl,
> > probe: cp_init_one,
> > - remove: cp_remove_one,
> > + remove: __devexit_p(cp_remove_one),
> > };
> >
> > static int __init cp_init (void)
> >
>
>