Subject: [PATCH] [acpi driver core] Make sure we add driver proc directory first - We must create a proc directory for a driver before we call driver_register(), otherwise the per-device directories that are created will not have a valid parent to place them (making them appear in /proc). Signed-off-by: Patrick Mochel --- drivers/acpi/drivers/core/driver.c | 19 ++++++++++++------- 1 files changed, 12 insertions(+), 7 deletions(-) applies-to: d1ddbc624a6003bdb431b9d2345e3ec396ba22c7 838bd390745cb8dc5c1863eb6ae275ea6cdd99f7 diff --git a/drivers/acpi/drivers/core/driver.c b/drivers/acpi/drivers/core/driver.c index 52e7507..3c601b3 100644 --- a/drivers/acpi/drivers/core/driver.c +++ b/drivers/acpi/drivers/core/driver.c @@ -214,25 +214,30 @@ int acpi_driver_register(struct acpi_dev drv->d_drv.suspend = acpi_device_suspend; drv->d_drv.resume = acpi_device_resume; - /* - * Register driver with core + * Create the proc interface for the driver + * + * Note this is done before we register the driver, + * since registration may bind it to devices, which + * will want to create per-device proc directories. + * Those will end up in /proc without a valid driver + * directory. */ - ret = driver_register(&drv->d_drv); + ret = acpi_driver_proc_add(drv); if (ret) goto Done; /* - * Create the proc interface for the driver + * Register driver with core */ - ret = acpi_driver_proc_add(drv); + ret = driver_register(&drv->d_drv); if (ret) - goto Unregister; + goto RemoveProc; Done: return ret; - Unregister: + RemoveProc: driver_unregister(&drv->d_drv); goto Done; } --- 0.99.9.GIT