With CONFIG_MCA=y and no MCA bus present, drivers go oops deep in the kobject
code when calling mca_register_driver().  Because there is no MCA subsystem
registered against the driver.

Plug this in mca_register_driver().


 drivers/mca/mca-driver.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff -puN drivers/mca/mca-driver.c~no-mca-oops-fix drivers/mca/mca-driver.c
--- 25/drivers/mca/mca-driver.c~no-mca-oops-fix	2003-10-18 18:18:32.000000000 -0700
+++ 25-akpm/drivers/mca/mca-driver.c	2003-10-18 18:19:11.000000000 -0700
@@ -32,9 +32,11 @@ int mca_register_driver(struct mca_drive
 {
 	int r;
 
-	mca_drv->driver.bus = &mca_bus_type;
-	if ((r = driver_register(&mca_drv->driver)) < 0)
-		return r;
+	if (MCA_bus) {
+		mca_drv->driver.bus = &mca_bus_type;
+		if ((r = driver_register(&mca_drv->driver)) < 0)
+			return r;
+	}
 
 	return 0;
 }
@@ -42,6 +44,7 @@ EXPORT_SYMBOL(mca_register_driver);
 
 void mca_unregister_driver(struct mca_driver *mca_drv)
 {
-	driver_unregister(&mca_drv->driver);
+	if (MCA_bus)
+		driver_unregister(&mca_drv->driver);
 }
 EXPORT_SYMBOL(mca_unregister_driver);

_