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;
|
||||
BOOLEAN ShouldReleaseWhenDone;
|
||||
USBD_STATUS UrbStatus;
|
||||
KIRQL OldLevel;
|
||||
|
||||
//
|
||||
// sanity checks
|
||||
|
@ -763,11 +764,21 @@ CUSBQueue::QueueHeadCleanup(
|
|||
//
|
||||
if (Request->GetQueueHead(&NewQueueHead) == STATUS_SUCCESS)
|
||||
{
|
||||
//
|
||||
// first acquire request lock
|
||||
//
|
||||
KeAcquireSpinLock(&m_Lock, &OldLevel);
|
||||
|
||||
//
|
||||
// add to pending list
|
||||
//
|
||||
InsertTailList(&m_PendingRequestAsyncList, &NewQueueHead->LinkedQueueHeads);
|
||||
|
||||
//
|
||||
// release queue head
|
||||
//
|
||||
KeReleaseSpinLock(&m_Lock, OldLevel);
|
||||
|
||||
//
|
||||
// Done for now
|
||||
//
|
||||
|
@ -859,10 +870,20 @@ CUSBQueue::CompleteAsyncRequests()
|
|||
//
|
||||
Request = (IUSBRequest*) CurrentQH->Request;
|
||||
|
||||
//
|
||||
// release lock
|
||||
//
|
||||
KeReleaseSpinLock(&m_Lock, OldLevel);
|
||||
|
||||
//
|
||||
// complete request now
|
||||
//
|
||||
QueueHeadCleanup(CurrentQH);
|
||||
|
||||
//
|
||||
// first acquire request lock
|
||||
//
|
||||
KeAcquireSpinLock(&m_Lock, &OldLevel);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue