acer-wmi: fix resource reclaim in acer_wmi_init error path

This patch fixes the resource reclaim in acer_wmi_init error path.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
This commit is contained in:
Axel Lin 2010-06-22 16:17:38 +08:00 committed by Matthew Garrett
parent e9ec7f3539
commit 1c79632bd0
1 changed files with 22 additions and 5 deletions

View File

@ -1327,22 +1327,31 @@ static int __init acer_wmi_init(void)
"generic video driver\n");
}
if (platform_driver_register(&acer_platform_driver)) {
err = platform_driver_register(&acer_platform_driver);
if (err) {
printk(ACER_ERR "Unable to register platform driver.\n");
goto error_platform_register;
}
acer_platform_device = platform_device_alloc("acer-wmi", -1);
platform_device_add(acer_platform_device);
if (!acer_platform_device) {
err = -ENOMEM;
goto error_device_alloc;
}
err = platform_device_add(acer_platform_device);
if (err)
goto error_device_add;
err = create_sysfs();
if (err)
return err;
goto error_create_sys;
if (wmi_has_guid(WMID_GUID2)) {
interface->debug.wmid_devices = get_wmid_devices();
err = create_debugfs();
if (err)
return err;
goto error_create_debugfs;
}
/* Override any initial settings with values from the commandline */
@ -1350,8 +1359,16 @@ static int __init acer_wmi_init(void)
return 0;
error_create_debugfs:
remove_sysfs(acer_platform_device);
error_create_sys:
platform_device_del(acer_platform_device);
error_device_add:
platform_device_put(acer_platform_device);
error_device_alloc:
platform_driver_unregister(&acer_platform_driver);
error_platform_register:
return -ENODEV;
return err;
}
static void __exit acer_wmi_exit(void)