Marcelo, Heres my second attempt at a patch to fix these compile time issues can you check it over and possibly include it in your next release. diff -ur linux-2.4.18-pre2.orig/drivers/media/video/bttv-driver.c linux-2.4.18-pre2/drivers/media/video/bttv-driver.c --- linux-2.4.18-pre2.orig/drivers/media/video/bttv-driver.c Sat Dec 22 13:39:39 2001 +++ linux-2.4.18-pre2/drivers/media/video/bttv-driver.c Wed Jan 9 13:25:18 2002 @@ -2820,11 +2820,10 @@ * Scan for a Bt848 card, request the irq and map the io memory */ -static void __devexit bttv_remove(struct pci_dev *pci_dev) +static void bttv_remove_card(struct bttv *btv) { u8 command; int j; - struct bttv *btv = pci_get_drvdata(pci_dev); if (bttv_verbose) printk("bttv%d: unloading\n",btv->nr); @@ -2890,10 +2889,18 @@ btv->shutdown=1; wake_up(&btv->gpioq); - pci_set_drvdata(pci_dev, NULL); return; } +static void __devexit bttv_remove(struct pci_dev *pci_dev) +{ + struct bttv *btv = pci_get_drvdata(pci_dev); + + if (btv) { + bttv_remove_card(btv); + pci_set_drvdata(pci_dev, NULL); + } +} static int __devinit bttv_probe(struct pci_dev *dev, const struct pci_device_id *pci_id) { @@ -2992,7 +2999,7 @@ pci_set_drvdata(dev,btv); if(init_bt848(btv) < 0) { - bttv_remove(dev); + bttv_remove_card(btv); return -EIO; } bttv_num++; diff -ur linux-2.4.18-pre2.orig/drivers/usb/usb-uhci.c linux-2.4.18-pre2/drivers/usb/usb-uhci.c --- linux-2.4.18-pre2.orig/drivers/usb/usb-uhci.c Sat Dec 22 13:39:39 2001 +++ linux-2.4.18-pre2/drivers/usb/usb-uhci.c Wed Jan 9 14:11:19 2002 @@ -2845,10 +2845,9 @@ s->running = 1; } -_static void __devexit -uhci_pci_remove (struct pci_dev *dev) +_static void +uhci_pci_remove_card (uhci_t *s) { - uhci_t *s = pci_get_drvdata(dev); struct usb_device *root_hub = s->bus->root_hub; s->running = 0; // Don't allow submit_urb @@ -2868,7 +2867,17 @@ free_irq (s->irq, s); usb_free_bus (s->bus); cleanup_skel (s); - kfree (s); +} + +_static void __devexit +uhci_pci_remove (struct pci_dev *dev) +{ + uhci_t *s = pci_get_drvdata(dev); + + if (s) { + uhci_pci_remove_card(s); + kfree (s); + } } _static int __init uhci_start_usb (uhci_t *s) @@ -3001,7 +3010,8 @@ s->irq = irq; if(uhci_start_usb (s) < 0) { - uhci_pci_remove(dev); + uhci_pci_remove_card(s); + kfree(s); return -1; } To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/