Skip to content

Commit

Permalink
ide-cd: fix "missing data" handling in cdrom_pc_intr()
Browse files Browse the repository at this point in the history
If drive still wants to transfer the data we need to pad the transfer
instead of just finishing the request.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Feb 1, 2008
1 parent 5a5222d commit f1071e6
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions drivers/ide/ide-cd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1500,9 +1500,11 @@ static ide_startstop_t cdrom_pc_intr (ide_drive_t *drive)

if (xferfunc) {
if (!rq->data) {
printk(KERN_ERR "%s: confused, missing data\n",
drive->name);
blk_dump_rq_flags(rq, write ? "cdrom_pc_intr, write"
: "cdrom_pc_intr, read");
goto confused;
goto pad;
}
/* Transfer the data. */
xferfunc(drive, rq->data, thislen);
Expand All @@ -1515,7 +1517,6 @@ static ide_startstop_t cdrom_pc_intr (ide_drive_t *drive)
if (write && blk_sense_request(rq))
rq->sense_len += thislen;
} else {
confused:
printk (KERN_ERR "%s: cdrom_pc_intr: The drive "
"appears confused (ireason = 0x%02x). "
"Trying to recover by ending request.\n",
Expand All @@ -1524,7 +1525,7 @@ static ide_startstop_t cdrom_pc_intr (ide_drive_t *drive)
cdrom_end_request(drive, 0);
return ide_stopped;
}

pad:
/*
* If we haven't moved enough data to satisfy the drive,
* add some padding.
Expand Down

0 comments on commit f1071e6

Please sign in to comment.