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().
{
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;
}
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);