diff options
author | Arjun Sreedharan <arjun024@gmail.com> | 2014-08-17 20:00:09 +0530 |
---|---|---|
committer | Zefan Li <lizefan@huawei.com> | 2014-09-25 11:49:11 +0800 |
commit | db83744afb3a43a21722d3bb17c8e1e8da5a9cf7 (patch) | |
tree | 3a9d72007e043058d4ad28823a42c9680cb22767 | |
parent | f0634a3e2f4eea6ff149bf62aa97269fb8d65107 (diff) | |
download | lwn-db83744afb3a43a21722d3bb17c8e1e8da5a9cf7.tar.gz lwn-db83744afb3a43a21722d3bb17c8e1e8da5a9cf7.zip |
pata_scc: propagate return value of scc_wait_after_reset
commit 4dc7c76cd500fa78c64adfda4b070b870a2b993c upstream.
scc_bus_softreset not necessarily should return zero.
Propagate the error code.
Signed-off-by: Arjun Sreedharan <arjun024@gmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Zefan Li <lizefan@huawei.com>
-rw-r--r-- | drivers/ata/pata_scc.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/ata/pata_scc.c b/drivers/ata/pata_scc.c index e265f835c95d..19759d3df45a 100644 --- a/drivers/ata/pata_scc.c +++ b/drivers/ata/pata_scc.c @@ -586,7 +586,7 @@ static int scc_wait_after_reset(struct ata_link *link, unsigned int devmask, * Note: Original code is ata_bus_softreset(). */ -static unsigned int scc_bus_softreset(struct ata_port *ap, unsigned int devmask, +static int scc_bus_softreset(struct ata_port *ap, unsigned int devmask, unsigned long deadline) { struct ata_ioports *ioaddr = &ap->ioaddr; @@ -600,9 +600,7 @@ static unsigned int scc_bus_softreset(struct ata_port *ap, unsigned int devmask, udelay(20); out_be32(ioaddr->ctl_addr, ap->ctl); - scc_wait_after_reset(&ap->link, devmask, deadline); - - return 0; + return scc_wait_after_reset(&ap->link, devmask, deadline); } /** @@ -619,7 +617,8 @@ static int scc_softreset(struct ata_link *link, unsigned int *classes, { struct ata_port *ap = link->ap; unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS; - unsigned int devmask = 0, err_mask; + unsigned int devmask = 0; + int rc; u8 err; DPRINTK("ENTER\n"); @@ -635,9 +634,9 @@ static int scc_softreset(struct ata_link *link, unsigned int *classes, /* issue bus reset */ DPRINTK("about to softreset, devmask=%x\n", devmask); - err_mask = scc_bus_softreset(ap, devmask, deadline); - if (err_mask) { - ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", err_mask); + rc = scc_bus_softreset(ap, devmask, deadline); + if (rc) { + ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", rc); return -EIO; } |