diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/ide/ide-cd.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index f0ede5953af8..6a9a769bffc1 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c | |||
| @@ -592,9 +592,19 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive) | |||
| 592 | } | 592 | } |
| 593 | } else if (!blk_pc_request(rq)) { | 593 | } else if (!blk_pc_request(rq)) { |
| 594 | ide_cd_request_sense_fixup(drive, cmd); | 594 | ide_cd_request_sense_fixup(drive, cmd); |
| 595 | /* complain if we still have data left to transfer */ | 595 | |
| 596 | uptodate = cmd->nleft ? 0 : 1; | 596 | uptodate = cmd->nleft ? 0 : 1; |
| 597 | if (uptodate == 0) | 597 | |
| 598 | /* | ||
| 599 | * suck out the remaining bytes from the drive in an | ||
| 600 | * attempt to complete the data xfer. (see BZ#13399) | ||
| 601 | */ | ||
| 602 | if (!(stat & ATA_ERR) && !uptodate && thislen) { | ||
| 603 | ide_pio_bytes(drive, cmd, write, thislen); | ||
| 604 | uptodate = cmd->nleft ? 0 : 1; | ||
| 605 | } | ||
| 606 | |||
| 607 | if (!uptodate) | ||
| 598 | rq->cmd_flags |= REQ_FAILED; | 608 | rq->cmd_flags |= REQ_FAILED; |
| 599 | } | 609 | } |
| 600 | goto out_end; | 610 | goto out_end; |
