Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b3d96afc authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

ide-scsi: fix race in idescsi_transfer_pc()



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: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 63f5abb0
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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;
}