projects
/
platform
/
kernel
/
linux-rpi.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
btrfs: fix race between quota disable and quota assign ioctls
[platform/kernel/linux-rpi.git]
/
drivers
/
ata
/
libata-transport.c
diff --git
a/drivers/ata/libata-transport.c
b/drivers/ata/libata-transport.c
index
34bb460
..
60f22e1
100644
(file)
--- a/
drivers/ata/libata-transport.c
+++ b/
drivers/ata/libata-transport.c
@@
-196,7
+196,7
@@
static struct {
{ XFER_PIO_0, "XFER_PIO_0" },
{ XFER_PIO_SLOW, "XFER_PIO_SLOW" }
};
{ XFER_PIO_0, "XFER_PIO_0" },
{ XFER_PIO_SLOW, "XFER_PIO_SLOW" }
};
-ata_bitfield_name_
match(xfer,
ata_xfer_names)
+ata_bitfield_name_
search(xfer,
ata_xfer_names)
/*
* ATA Port attributes
/*
* ATA Port attributes
@@
-301,7
+301,9
@@
int ata_tport_add(struct device *parent,
pm_runtime_enable(dev);
pm_runtime_forbid(dev);
pm_runtime_enable(dev);
pm_runtime_forbid(dev);
- transport_add_device(dev);
+ error = transport_add_device(dev);
+ if (error)
+ goto tport_transport_add_err;
transport_configure_device(dev);
error = ata_tlink_add(&ap->link);
transport_configure_device(dev);
error = ata_tlink_add(&ap->link);
@@
-312,12
+314,12
@@
int ata_tport_add(struct device *parent,
tport_link_err:
transport_remove_device(dev);
tport_link_err:
transport_remove_device(dev);
+ tport_transport_add_err:
device_del(dev);
tport_err:
transport_destroy_device(dev);
put_device(dev);
device_del(dev);
tport_err:
transport_destroy_device(dev);
put_device(dev);
- ata_host_put(ap->host);
return error;
}
return error;
}
@@
-426,7
+428,9
@@
int ata_tlink_add(struct ata_link *link)
goto tlink_err;
}
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) {
transport_configure_device(dev);
ata_for_each_dev(ata_dev, link, ALL) {
@@
-441,6
+445,7
@@
int ata_tlink_add(struct ata_link *link)
ata_tdev_delete(ata_dev);
}
transport_remove_device(dev);
ata_tdev_delete(ata_dev);
}
transport_remove_device(dev);
+ tlink_transport_err:
device_del(dev);
tlink_err:
transport_destroy_device(dev);
device_del(dev);
tlink_err:
transport_destroy_device(dev);
@@
-678,7
+683,13
@@
static int ata_tdev_add(struct ata_device *ata_dev)
return error;
}
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;
}
transport_configure_device(dev);
return 0;
}