]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/staging/quickstart/quickstart.c
Staging: quickstart: free after input_unregister_device()
[mv-sheeva.git] / drivers / staging / quickstart / quickstart.c
index ba8f670ec0a701200000d084987faa300f13faaa..d83bec876d2e3a1daf4e71dd4969df36e352ee78 100644 (file)
@@ -355,7 +355,6 @@ static int quickstart_acpi_remove(struct acpi_device *device, int type)
 static void quickstart_exit(void)
 {
        input_unregister_device(quickstart_input);
-       input_free_device(quickstart_input);
 
        device_remove_file(&pf_device->dev, &dev_attr_pressed_button);
        device_remove_file(&pf_device->dev, &dev_attr_buttons);
@@ -375,6 +374,7 @@ static int __init quickstart_init_input(void)
 {
        struct quickstart_btn **ptr = &quickstart_data.btn_lst;
        int count;
+       int ret;
 
        quickstart_input = input_allocate_device();
 
@@ -391,22 +391,27 @@ static int __init quickstart_init_input(void)
                ptr = &((*ptr)->next);
        }
 
-       return input_register_device(quickstart_input);
+       ret = input_register_device(quickstart_input);
+       if (ret) {
+               input_free_device(quickstart_input);
+               return ret;
+       }
+
+       return 0;
 }
 
 static int __init quickstart_init(void)
 {
        int ret;
-       acpi_status status = 0;
 
        /* ACPI Check */
        if (acpi_disabled)
                return -ENODEV;
 
        /* ACPI driver register */
-       status = acpi_bus_register_driver(&quickstart_acpi_driver);
-       if (status < 0)
-               return -ENODEV;
+       ret = acpi_bus_register_driver(&quickstart_acpi_driver);
+       if (ret)
+               return ret;
 
        /* If existing bus with no devices */
        if (!quickstart_data.btn_lst) {