mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-01 04:13:35 +00:00
- 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. svn path=/trunk/; revision=28980
This commit is contained in:
@@ -2527,7 +2527,6 @@ ScsiPortDispatchScsi(IN PDEVICE_OBJECT DeviceObject,
|
||||
{
|
||||
/* Get next logical unit request */
|
||||
SpiGetNextRequestFromLun(DeviceExtension, LunExtension);
|
||||
KeReleaseSpinLock(&DeviceExtension->SpinLock, Irql);
|
||||
|
||||
/* SpiGetNextRequestFromLun() releases the spinlock */
|
||||
KeLowerIrql(Irql);
|
||||
@@ -4167,7 +4166,6 @@ SpiProcessCompletedRequest(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension,
|
||||
{
|
||||
/* Start the next packet */
|
||||
SpiGetNextRequestFromLun(DeviceExtension, LunExtension);
|
||||
KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4175,7 +4173,7 @@ SpiProcessCompletedRequest(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension,
|
||||
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 @@ Error:
|
||||
&& (Srb->SrbFlags & SRB_FLAGS_NO_QUEUE_FREEZE))
|
||||
{
|
||||
if (LunExtension->RequestTimeout == -1)
|
||||
{
|
||||
SpiGetNextRequestFromLun(DeviceExtension, LunExtension);
|
||||
KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock);
|
||||
}
|
||||
else
|
||||
KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user