Index: ntoskrnl/mm/ARM3/section.c =================================================================== --- ntoskrnl/mm/ARM3/section.c (revision 58781) +++ ntoskrnl/mm/ARM3/section.c (working copy) @@ -3040,6 +3040,13 @@ return STATUS_INVALID_PAGE_PROTECTION; } + /* Check for non-allocation-granularity-aligned BaseAddress */ + if (BaseAddress && (*BaseAddress != ALIGN_DOWN_POINTER_BY(*BaseAddress, MM_VIRTMEM_GRANULARITY))) + { + DPRINT("BaseAddress is not at 64-kilobyte address boundary."); + return STATUS_MAPPED_ALIGNMENT; + } + /* Now convert the protection mask into desired section access mask */ DesiredAccess = MmMakeSectionAccess[ProtectionMask & 0x7];