Author: fireball
Date: Fri Dec 26 14:34:40 2008
New Revision: 38360
URL:
http://svn.reactos.org/svn/reactos?rev=38360&view=rev
Log:
- Fix broken behavior of IoBuildPartialMdl, which instead of copying 4 flags from a source
mdl to a target one was always setting all of them, thus often making resultant mdl
unusable.
Modified:
trunk/reactos/ntoskrnl/io/iomgr/iomdl.c
Modified: trunk/reactos/ntoskrnl/io/iomgr/iomdl.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iomdl.c?…
==============================================================================
--- trunk/reactos/ntoskrnl/io/iomgr/iomdl.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/io/iomgr/iomdl.c [iso-8859-1] Fri Dec 26 14:34:40 2008
@@ -98,6 +98,10 @@
PPFN_NUMBER TargetPages = (PPFN_NUMBER)(TargetMdl + 1);
PPFN_NUMBER SourcePages = (PPFN_NUMBER)(SourceMdl + 1);
ULONG Offset;
+ ULONG FlagsMask = (MDL_IO_PAGE_READ |
+ MDL_SOURCE_IS_NONPAGED_POOL |
+ MDL_MAPPED_TO_SYSTEM_VA |
+ MDL_IO_SPACE);
/* Calculate the offset */
Offset = (ULONG)((ULONG_PTR)VirtualAddress -
@@ -118,10 +122,7 @@
/* Set the MDL Flags */
TargetMdl->MdlFlags = (MDL_ALLOCATED_FIXED_SIZE | MDL_ALLOCATED_MUST_SUCCEED);
- TargetMdl->MdlFlags |= (MDL_IO_PAGE_READ |
- MDL_SOURCE_IS_NONPAGED_POOL |
- MDL_MAPPED_TO_SYSTEM_VA |
- MDL_IO_SPACE);
+ TargetMdl->MdlFlags |= SourceMdl->MdlFlags & FlagsMask;
TargetMdl->MdlFlags |= MDL_PARTIAL;
/* Set the mapped VA */