Author: fireball Date: Sun Sep 9 18:45:38 2007 New Revision: 28980
URL: http://svn.reactos.org/svn/reactos?rev=28980&view=rev Log: - Revert 27476: another attempt (previously, dgorbachev tried to "fix" this code) to double-release spinlocks. There are even comments in some uncertain cases about this.
For future generations: Have a look at SpiGetNextLunRequest(), it's full of KeReleaseSpinLock()s.
Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c
Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/sc... ============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport.c (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport.c Sun Sep 9 18:45:38 2007 @@ -2527,7 +2527,6 @@ { /* Get next logical unit request */ SpiGetNextRequestFromLun(DeviceExtension, LunExtension); - KeReleaseSpinLock(&DeviceExtension->SpinLock, Irql);
/* SpiGetNextRequestFromLun() releases the spinlock */ KeLowerIrql(Irql); @@ -4167,7 +4166,6 @@ { /* Start the next packet */ SpiGetNextRequestFromLun(DeviceExtension, LunExtension); - KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); } else { @@ -4175,7 +4173,7 @@ KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); }
- DPRINT("IoCompleting request IRP 0x%08p\n", Irp); + DPRINT("IoCompleting request IRP 0x%p\n", Irp);
IoCompleteRequest(Irp, IO_DISK_INCREMENT);
@@ -4283,10 +4281,7 @@ && (Srb->SrbFlags & SRB_FLAGS_NO_QUEUE_FREEZE)) { if (LunExtension->RequestTimeout == -1) - { SpiGetNextRequestFromLun(DeviceExtension, LunExtension); - KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); - } else KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); }