aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2009-07-08 12:16:37 +0900
committerGreg Kroah-Hartman <gregkh@suse.de>2009-07-30 14:40:33 -0700
commit3b64409d582823106065a49882d653009de20828 (patch)
treebcbbf540017df5943acc113d7e46eddb5c7a4fb8
parenta5ed86d5af2d63f3edeab7e63f15aa3c34c5cc25 (diff)
downloadlinux-linaro-stable-3b64409d582823106065a49882d653009de20828.tar.gz
libata: fix follow-up SRST failure path
commit fe2c4d018fc6127610fef677e020b3bb41cfaaaf upstream. ata_eh_reset() was missing error return handling after follow-up SRST allowing EH to continue the normal probing path after reset failure. This was discovered while testing new WD 2TB drives which take longer than 10 secs to spin up and cause the first follow-up SRST to time out. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/ata/libata-eh.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 94919ad03df1..d37808ba0b58 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2517,6 +2517,10 @@ int ata_eh_reset(struct ata_link *link, int classify,
ata_eh_about_to_do(link, NULL, ATA_EH_RESET);
rc = ata_do_reset(link, reset, classes, deadline, true);
+ if (rc) {
+ failed_link = link;
+ goto fail;
+ }
}
} else {
if (verbose)