USB: gadget: file_storage: put_device() in error recovery
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / usb / gadget / file_storage.c
index d4fdf65..a6eacb5 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);