diff options
-rw-r--r-- | drivers/ide/ide-cd.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index 3d4e09969763..b6a0d126b576 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c | |||
@@ -217,6 +217,8 @@ static void cdrom_queue_request_sense(ide_drive_t *drive, void *sense, | |||
217 | if (sense == NULL) | 217 | if (sense == NULL) |
218 | sense = &info->sense_data; | 218 | sense = &info->sense_data; |
219 | 219 | ||
220 | memset(sense, 0, 18); | ||
221 | |||
220 | /* stuff the sense request in front of our current request */ | 222 | /* stuff the sense request in front of our current request */ |
221 | blk_rq_init(NULL, rq); | 223 | blk_rq_init(NULL, rq); |
222 | rq->cmd_type = REQ_TYPE_ATA_PC; | 224 | rq->cmd_type = REQ_TYPE_ATA_PC; |
@@ -504,14 +506,8 @@ static void ide_cd_request_sense_fixup(ide_drive_t *drive, struct ide_cmd *cmd) | |||
504 | * and some drives don't send them. Sigh. | 506 | * and some drives don't send them. Sigh. |
505 | */ | 507 | */ |
506 | if (rq->cmd[0] == GPCMD_REQUEST_SENSE && | 508 | if (rq->cmd[0] == GPCMD_REQUEST_SENSE && |
507 | cmd->nleft > 0 && cmd->nleft <= 5) { | 509 | cmd->nleft > 0 && cmd->nleft <= 5) |
508 | unsigned int ofs = cmd->nbytes - cmd->nleft; | 510 | cmd->nleft = 0; |
509 | |||
510 | while (cmd->nleft > 0) { | ||
511 | *((u8 *)rq->data + ofs++) = 0; | ||
512 | cmd->nleft--; | ||
513 | } | ||
514 | } | ||
515 | } | 511 | } |
516 | 512 | ||
517 | int ide_cd_queue_pc(ide_drive_t *drive, const unsigned char *cmd, | 513 | int ide_cd_queue_pc(ide_drive_t *drive, const unsigned char *cmd, |