diff --git "a/ntoskrnl/mm/ARM3/mdlsup.c" "b/ntoskrnl/mm/ARM3/mdlsup.c" index 1bd22c1e78a..0d3d124fb7c 100644 --- "a/ntoskrnl/mm/ARM3/mdlsup.c" +++ "b/ntoskrnl/mm/ARM3/mdlsup.c" @@ -697,10 +697,17 @@ MmMapLockedPagesSpecifyCache(IN PMDL Mdl, // // Sanity checks // - ASSERT((Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | + /* For Mdl->MdlFlags == (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL) + * this exact combination of Flags is used in CORE-17686 for + * Regmon Version 4.34 in its regsys.sys Kernel Mode driver + * so it should not cause an assert. This is accounted for + * in the two ASSERT's below by their top lines. */ + ASSERT((Mdl->MdlFlags == (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL)) || + (Mdl->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL | MDL_PARTIAL_HAS_BEEN_MAPPED)) == 0); - ASSERT((Mdl->MdlFlags & (MDL_PAGES_LOCKED | MDL_PARTIAL)) != 0); + ASSERT((Mdl->MdlFlags == (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL)) || + (Mdl->MdlFlags & (MDL_PAGES_LOCKED | MDL_PARTIAL)) != 0); // // Get the correct cache type @@ -786,7 +793,13 @@ MmMapLockedPagesSpecifyCache(IN PMDL Mdl, // // Mark it as mapped // - ASSERT((Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); + /* For Mdl->MdlFlags == (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL) + * this exact combination of Flags is used in CORE-17686 for + * Regmon Version 4.34 in its regsys.sys Kernel Mode driver + * so it should not cause an assert. This is accounted for + * in the ASSERT below by its first line. */ + ASSERT((Mdl->MdlFlags == (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL)) || + (Mdl->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); Mdl->MappedSystemVa = Base; Mdl->MdlFlags |= MDL_MAPPED_TO_SYSTEM_VA;