mirror of
https://github.com/reactos/reactos.git
synced 2024-10-18 23:18:56 +00:00
[USBEHCI]
- Don't complete irps with lock held svn path=/branches/usb-bringup-trunk/; revision=55091
This commit is contained in:
parent
b434c46463
commit
1cdf0e1d0d
|
@ -695,6 +695,7 @@ CUSBQueue::QueueHeadCleanup(
|
||||||
IUSBRequest * Request;
|
IUSBRequest * Request;
|
||||||
BOOLEAN ShouldReleaseWhenDone;
|
BOOLEAN ShouldReleaseWhenDone;
|
||||||
USBD_STATUS UrbStatus;
|
USBD_STATUS UrbStatus;
|
||||||
|
KIRQL OldLevel;
|
||||||
|
|
||||||
//
|
//
|
||||||
// sanity checks
|
// sanity checks
|
||||||
|
@ -763,11 +764,21 @@ CUSBQueue::QueueHeadCleanup(
|
||||||
//
|
//
|
||||||
if (Request->GetQueueHead(&NewQueueHead) == STATUS_SUCCESS)
|
if (Request->GetQueueHead(&NewQueueHead) == STATUS_SUCCESS)
|
||||||
{
|
{
|
||||||
|
//
|
||||||
|
// first acquire request lock
|
||||||
|
//
|
||||||
|
KeAcquireSpinLock(&m_Lock, &OldLevel);
|
||||||
|
|
||||||
//
|
//
|
||||||
// add to pending list
|
// add to pending list
|
||||||
//
|
//
|
||||||
InsertTailList(&m_PendingRequestAsyncList, &NewQueueHead->LinkedQueueHeads);
|
InsertTailList(&m_PendingRequestAsyncList, &NewQueueHead->LinkedQueueHeads);
|
||||||
|
|
||||||
|
//
|
||||||
|
// release queue head
|
||||||
|
//
|
||||||
|
KeReleaseSpinLock(&m_Lock, OldLevel);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Done for now
|
// Done for now
|
||||||
//
|
//
|
||||||
|
@ -859,10 +870,20 @@ CUSBQueue::CompleteAsyncRequests()
|
||||||
//
|
//
|
||||||
Request = (IUSBRequest*) CurrentQH->Request;
|
Request = (IUSBRequest*) CurrentQH->Request;
|
||||||
|
|
||||||
|
//
|
||||||
|
// release lock
|
||||||
|
//
|
||||||
|
KeReleaseSpinLock(&m_Lock, OldLevel);
|
||||||
|
|
||||||
//
|
//
|
||||||
// complete request now
|
// complete request now
|
||||||
//
|
//
|
||||||
QueueHeadCleanup(CurrentQH);
|
QueueHeadCleanup(CurrentQH);
|
||||||
|
|
||||||
|
//
|
||||||
|
// first acquire request lock
|
||||||
|
//
|
||||||
|
KeAcquireSpinLock(&m_Lock, &OldLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue