--- drivers/amrmo_init.c 2004-06-23 21:29:06.000000000 +0200 +++ drivers/amrmo_init.c 2004-12-27 18:23:36.000000000 +0100 @@ -692,6 +692,7 @@ static int __init amrmo_init(void) { struct pci_dev *dev = NULL; + int register_err; #ifdef OLD_KERNEL if (!pci_present()) return -ENODEV; @@ -718,15 +719,8 @@ dev->driver->remove(dev); dev->driver = NULL; #else - struct device *reldev = get_device(&dev->dev); - AMRMO_DBG("device %04x:%04x is grabbed by driver %s: try to release\n", - dev->vendor,dev->device, - (reldev&&reldev->driver)? - reldev->driver->name:"unknown"); - if (reldev) { - device_release_driver(reldev); - put_device(reldev); - } + AMRMO_DBG("Another driver has claimed the device . . .\n"); + return -EBUSY; #endif } } @@ -740,7 +734,9 @@ } #endif - if (!pci_register_driver(&amrmo_pci_driver)) { + register_err = pci_register_driver(&amrmo_pci_driver); + if ( register_err < 0 ) { + AMRMO_DBG("error registering device: %d returned by pci_register_driver()", register_err); pci_unregister_driver(&amrmo_pci_driver); #ifndef OLD_KERNEL class_simple_destroy(amrmo_class);