ide: check rq->cmd_type in drive_cmd_intr()
PATCH 1/15 ide: check rq->cmd_type in drive_cmd_intr()
drive_cmd_intr() is used by both REQ_TYPE_ATA_CMD and REQ_TYPE_ATA_TASK but commands using PIO-in protocol are valid only for REQ_TYPE_ATA_CMD (&args[4] in case of REQ_TYPE_ATA_TASK points to a value for IDE_LCYL_REG register instead of the data buffer). This fix allows REQ_TYPE_ATA_TASK commands to use non-zero values for IDE_SECTOR_REG (args[3]).
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
--- drivers/ide/ide-io.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/ide/ide-io.c +2 -1
@@ -659,7 +659,8 @@ static ide_startstop_t drive_cmd_intr (iint retries =10 ;local_irq_enable_in_hardirq (); -if ((stat &DRQ_STAT ) && args && args[3 ]) { +if (rq->cmd_type ==REQ_TYPE_ATA_CMD && + (stat &DRQ_STAT ) && args && args[3 ]) {u8 io_32bit = drive->io_32bit; drive->io_32bit =0 ; hwif->ata_input_data (drive, &args[4 ], args[3 ] *SECTOR_WORDS );