Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=893a342a686e6ce36ef24d322f3f52420a041313
Commit:     893a342a686e6ce36ef24d322f3f52420a041313
Parent:     f094e4f358c2f9f0a46dc777f64ed7794f73d283
Author:     Cyrill Gorcunov <[EMAIL PROTECTED]>
AuthorDate: Thu Apr 26 00:38:00 2007 -0700
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Fri Apr 27 13:28:40 2007 -0700

    USB Elan FTDI: check for driver registration status
    
    Add checking of driver registration status and release allocated resources
    if it failed.
    
    Signed-off-by: Cyrill Gorcunov <[EMAIL PROTECTED]>
    Cc: Pete Zaitcev <[EMAIL PROTECTED]>
    Cc: "Luiz Fernando N. Capitulino" <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 drivers/usb/misc/ftdi-elan.c |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/usb/misc/ftdi-elan.c b/drivers/usb/misc/ftdi-elan.c
index bc3327e..d9cbdb8 100644
--- a/drivers/usb/misc/ftdi-elan.c
+++ b/drivers/usb/misc/ftdi-elan.c
@@ -2910,24 +2910,28 @@ static int __init ftdi_elan_init(void)
         INIT_LIST_HEAD(&ftdi_static_list);
         status_queue = create_singlethread_workqueue("ftdi-status-control");
        if (!status_queue)
-               goto err1;
+               goto err_status_queue;
         command_queue = create_singlethread_workqueue("ftdi-command-engine");
        if (!command_queue)
-               goto err2;
+               goto err_command_queue;
         respond_queue = create_singlethread_workqueue("ftdi-respond-engine");
        if (!respond_queue)
-               goto err3;
+               goto err_respond_queue;
         result = usb_register(&ftdi_elan_driver);
-        if (result)
+        if (result) {
+               destroy_workqueue(status_queue);
+               destroy_workqueue(command_queue);
+               destroy_workqueue(respond_queue);
                 printk(KERN_ERR "usb_register failed. Error number %d\n",
                       result);
+       }
         return result;
 
- err3:
+ err_respond_queue:
        destroy_workqueue(command_queue);
- err2:
+ err_command_queue:
        destroy_workqueue(status_queue);
- err1:
+ err_status_queue:
        printk(KERN_ERR "%s couldn't create workqueue\n", 
ftdi_elan_driver.name);
        return -ENOMEM;
 }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to