Author: janderwald
Date: Sun Feb  8 08:11:51 2015
New Revision: 66203

URL: http://svn.reactos.org/svn/reactos?rev=66203&view=rev
Log:
[PORTCLS]
- fix crash / assert triggered with cwawdm driver
- fix irp leak
- CORE 7822

Modified:
    trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp
    trunk/reactos/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp

Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp?rev=66203&r1=66202&r2=66203&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp       
[iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp       
[iso-8859-1] Sun Feb  8 08:11:51 2015
@@ -552,6 +552,7 @@
     {
         // no irp available
         m_OutOfMapping = TRUE;
+        DPRINT("GetMappingWithTag no mapping available\n");
         return STATUS_NOT_FOUND;
     }
 
@@ -611,6 +612,7 @@
         StreamData->CurStreamHeader = 
(PKSSTREAM_HEADER)((ULONG_PTR)StreamData->CurStreamHeader + 
StreamData->CurStreamHeader->Size);
     }
 
+    DPRINT("GetMappingWithTag Tag %p Buffer %p Flags %lu ByteCount %lx\n", 
Tag, VirtualAddress, *Flags, *ByteCount);
     // done
     return STATUS_SUCCESS;
 }
@@ -654,6 +656,12 @@
 
     // remove irp from used list
     CurEntry = ExInterlockedRemoveHeadList(&m_FreeIrpList, &m_IrpListLock);
+    if (CurEntry == NULL)
+    {
+        // this should not happen
+        DPRINT("ReleaseMappingWithTag Tag %p not found\n", Tag);
+        return STATUS_NOT_FOUND;
+    }
 
     // sanity check
     PC_ASSERT(CurEntry);
@@ -743,6 +751,11 @@
         // complete the request
         IoCompleteRequest(Irp, IO_SOUND_INCREMENT);
     }
+    else
+    {
+        // there are still some headers not consumed
+        ExInterlockedInsertHeadList(&m_FreeIrpList, 
&Irp->Tail.Overlay.ListEntry, &m_IrpListLock);
+    }
 
     return STATUS_SUCCESS;
 }

Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp?rev=66203&r1=66202&r2=66203&view=diff
==============================================================================
--- trunk/reactos/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp    
[iso-8859-1] (original)
+++ trunk/reactos/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp    
[iso-8859-1] Sun Feb  8 08:11:51 2015
@@ -228,7 +228,7 @@
     IN PRESOURCELIST  ResourceList)
 {
     IMiniportWavePci * Miniport;
-    PSERVICEGROUP ServiceGroup;
+    PSERVICEGROUP ServiceGroup = 0;
     NTSTATUS Status;
     PPINCOUNT PinCount;
     PPOWERNOTIFY PowerNotify;


Reply via email to