btrfs: fix race between quota disable and quota assign ioctls
[platform/kernel/linux-rpi.git] / drivers / ata / libata-transport.c
index 3dd3b25..60f22e1 100644 (file)
@@ -428,7 +428,9 @@ int ata_tlink_add(struct ata_link *link)
                goto tlink_err;
        }
 
-       transport_add_device(dev);
+       error = transport_add_device(dev);
+       if (error)
+               goto tlink_transport_err;
        transport_configure_device(dev);
 
        ata_for_each_dev(ata_dev, link, ALL) {
@@ -443,6 +445,7 @@ int ata_tlink_add(struct ata_link *link)
                ata_tdev_delete(ata_dev);
        }
        transport_remove_device(dev);
+  tlink_transport_err:
        device_del(dev);
   tlink_err:
        transport_destroy_device(dev);
@@ -680,7 +683,13 @@ static int ata_tdev_add(struct ata_device *ata_dev)
                return error;
        }
 
-       transport_add_device(dev);
+       error = transport_add_device(dev);
+       if (error) {
+               device_del(dev);
+               ata_tdev_free(ata_dev);
+               return error;
+       }
+
        transport_configure_device(dev);
        return 0;
 }