Initial original import from: fuse-2.4.2-2.fc4
[captive.git] / src / libcaptive / mm / mdl.c
index 1feb346..5e9f1f4 100644 (file)
@@ -105,11 +105,17 @@ VOID MmUnmapLockedPages(PVOID BaseAddress,PMDL Mdl)
 {
        g_return_if_fail(BaseAddress!=NULL);
        g_return_if_fail(Mdl!=NULL);
-       g_return_if_fail(Mdl->MdlFlags&MDL_MAPPED_TO_SYSTEM_VA);
-       g_return_if_fail(BaseAddress!=Mdl->MappedSystemVa);
+       g_return_if_fail(BaseAddress==Mdl->MappedSystemVa);
 
+       /* No mapping is done for pages from MmBuildMdlForNonPagedPool(). */
+       if (Mdl->MdlFlags&MDL_SOURCE_IS_NONPAGED_POOL) {
+               g_return_if_fail(!(Mdl->MdlFlags&MDL_MAPPED_TO_SYSTEM_VA));
+               }
+       else {
+               g_return_if_fail(Mdl->MdlFlags&MDL_MAPPED_TO_SYSTEM_VA);
+               Mdl->MdlFlags&=~MDL_MAPPED_TO_SYSTEM_VA;
+               }
        Mdl->MappedSystemVa=NULL;
-       Mdl->MdlFlags&=~MDL_MAPPED_TO_SYSTEM_VA;
 }
 
 /**