mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 09:25:10 +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:
parent
45acb6f960
commit
6481e255c2
1 changed files with 1 additions and 6 deletions
|
@ -2527,7 +2527,6 @@ ScsiPortDispatchScsi(IN PDEVICE_OBJECT DeviceObject,
|
||||||
{
|
{
|
||||||
/* Get next logical unit request */
|
/* Get next logical unit request */
|
||||||
SpiGetNextRequestFromLun(DeviceExtension, LunExtension);
|
SpiGetNextRequestFromLun(DeviceExtension, LunExtension);
|
||||||
KeReleaseSpinLock(&DeviceExtension->SpinLock, Irql);
|
|
||||||
|
|
||||||
/* SpiGetNextRequestFromLun() releases the spinlock */
|
/* SpiGetNextRequestFromLun() releases the spinlock */
|
||||||
KeLowerIrql(Irql);
|
KeLowerIrql(Irql);
|
||||||
|
@ -4167,7 +4166,6 @@ SpiProcessCompletedRequest(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension,
|
||||||
{
|
{
|
||||||
/* Start the next packet */
|
/* Start the next packet */
|
||||||
SpiGetNextRequestFromLun(DeviceExtension, LunExtension);
|
SpiGetNextRequestFromLun(DeviceExtension, LunExtension);
|
||||||
KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -4175,7 +4173,7 @@ SpiProcessCompletedRequest(IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension,
|
||||||
KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock);
|
KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
DPRINT("IoCompleting request IRP 0x%08p\n", Irp);
|
DPRINT("IoCompleting request IRP 0x%p\n", Irp);
|
||||||
|
|
||||||
IoCompleteRequest(Irp, IO_DISK_INCREMENT);
|
IoCompleteRequest(Irp, IO_DISK_INCREMENT);
|
||||||
|
|
||||||
|
@ -4283,10 +4281,7 @@ Error:
|
||||||
&& (Srb->SrbFlags & SRB_FLAGS_NO_QUEUE_FREEZE))
|
&& (Srb->SrbFlags & SRB_FLAGS_NO_QUEUE_FREEZE))
|
||||||
{
|
{
|
||||||
if (LunExtension->RequestTimeout == -1)
|
if (LunExtension->RequestTimeout == -1)
|
||||||
{
|
|
||||||
SpiGetNextRequestFromLun(DeviceExtension, LunExtension);
|
SpiGetNextRequestFromLun(DeviceExtension, LunExtension);
|
||||||
KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock);
|
KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue