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 */
|
||||
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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue