--- a/drivers/amrmo_init.c	2004-06-23 21:29:06.000000000 +0200
+++ b/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);
