aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2008-01-30 04:18:26 -0500
committerJeff Garzik <jgarzik@redhat.com>2008-04-17 15:44:26 -0400
commit4f7faa3f2b99f8fb246c8cdeef971e55ceda4e52 (patch)
tree54602fe9e13d6ee571efe41174dd6ba1c63aec4c /drivers/ata
parentb93fda12357b3f1aa55cf69d8e088372788ea9ea (diff)
libata: make EH fail gracefully if no reset method is available
When no reset method is available, libata currently oopses. Although the condition can't happen unless there's a bug in a low level driver, oopsing isn't the best way to report the error condition. Complain, dump stack and fail reset instead. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/libata-eh.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index ecbb8e90cb8d..d94359a24d41 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2137,9 +2137,14 @@ int ata_eh_reset(struct ata_link *link, int classify,
2137 if (hardreset) { 2137 if (hardreset) {
2138 reset = hardreset; 2138 reset = hardreset;
2139 ehc->i.action = ATA_EH_HARDRESET; 2139 ehc->i.action = ATA_EH_HARDRESET;
2140 } else { 2140 } else if (softreset) {
2141 reset = softreset; 2141 reset = softreset;
2142 ehc->i.action = ATA_EH_SOFTRESET; 2142 ehc->i.action = ATA_EH_SOFTRESET;
2143 } else {
2144 ata_link_printk(link, KERN_ERR, "BUG: no reset method, "
2145 "please report to linux-ide@vger.kernel.org\n");
2146 dump_stack();
2147 return -EINVAL;
2143 } 2148 }
2144 2149
2145 if (prereset) { 2150 if (prereset) {