aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/libata-eh.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2008-07-31 03:07:04 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-08-22 02:19:39 -0400
commita674050e068a2919908730279f0b731ae6d2e005 (patch)
treeaa0fe8d065233fc32e458a861a50b20271f99555 /drivers/ata/libata-eh.c
parenteb3a55a9f43f0f8e770c2abf70e65bdda2d5ff1e (diff)
libata: fix EH action overwriting in ata_eh_reset()
ehc->i.action got accidentally overwritten to ATA_EH_HARD/SOFTRESET in ata_eh_reset(). The original intention was to clear reset action which wasn't selected. This can cause unexpected behavior when other EH actions are scheduled together with reset. Fix it. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata/libata-eh.c')
-rw-r--r--drivers/ata/libata-eh.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index a570ca47e239..c98909ba0b1c 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -2251,10 +2251,10 @@ int ata_eh_reset(struct ata_link *link, int classify,
2251 ehc->i.action &= ~ATA_EH_RESET; 2251 ehc->i.action &= ~ATA_EH_RESET;
2252 if (hardreset) { 2252 if (hardreset) {
2253 reset = hardreset; 2253 reset = hardreset;
2254 ehc->i.action = ATA_EH_HARDRESET; 2254 ehc->i.action |= ATA_EH_HARDRESET;
2255 } else if (softreset) { 2255 } else if (softreset) {
2256 reset = softreset; 2256 reset = softreset;
2257 ehc->i.action = ATA_EH_SOFTRESET; 2257 ehc->i.action |= ATA_EH_SOFTRESET;
2258 } 2258 }
2259 2259
2260 if (prereset) { 2260 if (prereset) {