--- a/drivers/input/gameport/ns558.c	2004-05-10 02:33:13.000000000 +0000
+++ b/drivers/input/gameport/ns558.c	2004-06-28 10:43:28.000000000 +0000
@@ -260,19 +260,19 @@
 
 #endif
 
+static int registered = 0;
+
 int __init ns558_init(void)
 {
 	int i = 0;
 
-/*
- * Probe for ISA ports.
- */
+	if (pnp_register_driver(&ns558_pnp_driver)>=0)
+		registered = 1;
 
 	while (ns558_isa_portlist[i])
 		ns558_isa_probe(ns558_isa_portlist[i++]);
 
-	pnp_register_driver(&ns558_pnp_driver);
-	return list_empty(&ns558_list) ? -ENODEV : 0;
+	return 0;
 }
 
 void __exit ns558_exit(void)
@@ -296,6 +296,7 @@
 				break;
 		}
 	}
+	if (registered)
 	pnp_unregister_driver(&ns558_pnp_driver);
 }
 
