]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/usb/gadget/file_storage.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / usb / gadget / file_storage.c
index d4fdf65fb9253fc1c9375d7c7a5885ee27915fe2..a6eacb59571b6075bddbb6388b132135334d0206 100644 (file)
@@ -3392,25 +3392,28 @@ static int __init fsg_bind(struct usb_gadget *gadget)
                dev_set_name(&curlun->dev,"%s-lun%d",
                             dev_name(&gadget->dev), i);
 
-               if ((rc = device_register(&curlun->dev)) != 0) {
+               kref_get(&fsg->ref);
+               rc = device_register(&curlun->dev);
+               if (rc) {
                        INFO(fsg, "failed to register LUN%d: %d\n", i, rc);
-                       goto out;
-               }
-               if ((rc = device_create_file(&curlun->dev,
-                                       &dev_attr_ro)) != 0 ||
-                               (rc = device_create_file(&curlun->dev,
-                                       &dev_attr_nofua)) != 0 ||
-                               (rc = device_create_file(&curlun->dev,
-                                       &dev_attr_file)) != 0) {
-                       device_unregister(&curlun->dev);
+                       put_device(&curlun->dev);
                        goto out;
                }
                curlun->registered = 1;
-               kref_get(&fsg->ref);
+
+               rc = device_create_file(&curlun->dev, &dev_attr_ro);
+               if (rc)
+                       goto out;
+               rc = device_create_file(&curlun->dev, &dev_attr_nofua);
+               if (rc)
+                       goto out;
+               rc = device_create_file(&curlun->dev, &dev_attr_file);
+               if (rc)
+                       goto out;
 
                if (mod_data.file[i] && *mod_data.file[i]) {
-                       if ((rc = fsg_lun_open(curlun,
-                                       mod_data.file[i])) != 0)
+                       rc = fsg_lun_open(curlun, mod_data.file[i]);
+                       if (rc)
                                goto out;
                } else if (!mod_data.removable) {
                        ERROR(fsg, "no file given for LUN%d\n", i);