Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pata_scc: propagate return value of scc_wait_after_reset

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>
Cc: stable@vger.kernel.org

authored by

Arjun Sreedharan and committed by
Tejun Heo
4dc7c76c 0e574077

+7 -8
+7 -8
drivers/ata/pata_scc.c
··· 585 585 * Note: Original code is ata_bus_softreset(). 586 586 */ 587 587 588 - static unsigned int scc_bus_softreset(struct ata_port *ap, unsigned int devmask, 588 + static int scc_bus_softreset(struct ata_port *ap, unsigned int devmask, 589 589 unsigned long deadline) 590 590 { 591 591 struct ata_ioports *ioaddr = &ap->ioaddr; ··· 599 599 udelay(20); 600 600 out_be32(ioaddr->ctl_addr, ap->ctl); 601 601 602 - scc_wait_after_reset(&ap->link, devmask, deadline); 603 - 604 - return 0; 602 + return scc_wait_after_reset(&ap->link, devmask, deadline); 605 603 } 606 604 607 605 /** ··· 616 618 { 617 619 struct ata_port *ap = link->ap; 618 620 unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS; 619 - unsigned int devmask = 0, err_mask; 621 + unsigned int devmask = 0; 622 + int rc; 620 623 u8 err; 621 624 622 625 DPRINTK("ENTER\n"); ··· 633 634 634 635 /* issue bus reset */ 635 636 DPRINTK("about to softreset, devmask=%x\n", devmask); 636 - err_mask = scc_bus_softreset(ap, devmask, deadline); 637 - if (err_mask) { 638 - ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", err_mask); 637 + rc = scc_bus_softreset(ap, devmask, deadline); 638 + if (rc) { 639 + ata_port_err(ap, "SRST failed (err_mask=0x%x)\n", rc); 639 640 return -EIO; 640 641 } 641 642