Skip to content

Commit

Permalink
ide-scsi: fix race in idescsi_transfer_pc()
Browse files Browse the repository at this point in the history
Start DMA engine before sending content of packet command (otherwise
it is possible that IRQ will happen before DMA engine is started).

Cc: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
  • Loading branch information
Bartlomiej Zolnierkiewicz committed Jul 15, 2008
1 parent 63f5abb commit b3d96af
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions drivers/scsi/ide-scsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -494,13 +494,14 @@ static ide_startstop_t idescsi_transfer_pc(ide_drive_t *drive)
/* Set the interrupt routine */
ide_set_handler(drive, &idescsi_pc_intr, get_timeout(pc), idescsi_expiry);

/* Send the actual packet */
hwif->output_data(drive, NULL, scsi->pc->c, 12);

if (pc->flags & PC_FLAG_DMA_OK) {
pc->flags |= PC_FLAG_DMA_IN_PROGRESS;
hwif->dma_ops->dma_start(drive);
}

/* Send the actual packet */
hwif->output_data(drive, NULL, scsi->pc->c, 12);

return ide_started;
}

Expand Down

0 comments on commit b3d96af

Please sign in to comment.