===== drivers/ide/ide-cd.c 1.27 vs edited ===== --- 1.27/drivers/ide/ide-cd.c Fri Oct 18 20:02:55 2002 +++ edited/drivers/ide/ide-cd.c Sun Nov 3 10:33:17 2002 @@ -310,6 +310,7 @@ #include #include /* For SCSI -> ATAPI command conversion */ +#include "../scsi/scsi.h" #include #include @@ -877,10 +878,10 @@ ide_handler_t *handler) { unsigned char *cmd_buf = rq->cmd; - int cmd_len = sizeof(rq->cmd); unsigned int timeout = rq->timeout; struct cdrom_info *info = drive->driver_data; ide_startstop_t startstop; + unsigned int cmd_len; if (CDROM_CONFIG_FLAGS(drive)->drq_interrupt) { /* Here we should have been called after receiving an interrupt @@ -902,6 +903,11 @@ /* Arm the interrupt handler. */ ide_set_handler(drive, handler, timeout, cdrom_timer_expiry); + + /* cdb length, pad upto the 12th byte if necessary */ + cmd_len = COMMAND_SIZE(rq->cmd[0]); + if (cmd_len < 12) + cmd_len = 12; /* Send the command to the device. */ HWIF(drive)->atapi_output_bytes(drive, cmd_buf, cmd_len);