[ros-diffs] [fireball] 33944: - Fix two bugs in MiDoMappedCopy: MI_MAPPED_PAGES is pages, not bytes; and a misuse of TotalSize / BufferSize. - Fix similar mistake in MiDoPoolCopy. - Patch from bug 3341. See issue #3341 for more details.
fireball at svn.reactos.org
fireball at svn.reactos.org
Thu Jun 12 11:18:11 CEST 2008
Author: fireball
Date: Thu Jun 12 04:18:11 2008
New Revision: 33944
URL: http://svn.reactos.org/svn/reactos?rev=33944&view=rev
Log:
- Fix two bugs in MiDoMappedCopy: MI_MAPPED_PAGES is pages, not bytes; and a misuse of TotalSize / BufferSize.
- Fix similar mistake in MiDoPoolCopy.
- Patch from bug 3341.
See issue #3341 for more details.
Modified:
trunk/reactos/ntoskrnl/mm/virtual.c
Modified: trunk/reactos/ntoskrnl/mm/virtual.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/virtual.c?rev=33944&r1=33943&r2=33944&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/virtual.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/virtual.c [iso-8859-1] Thu Jun 12 04:18:11 2008
@@ -67,7 +67,7 @@
IN KPROCESSOR_MODE PreviousMode,
OUT PULONG ReturnSize)
{
- PFN_NUMBER MdlBuffer[(sizeof(MDL) / sizeof(PFN_NUMBER)) + (MI_MAPPED_COPY_PAGES >> PAGE_SHIFT) + 1];
+ PFN_NUMBER MdlBuffer[(sizeof(MDL) / sizeof(PFN_NUMBER)) + MI_MAPPED_COPY_PAGES + 1];
PMDL Mdl = (PMDL)MdlBuffer;
ULONG TotalSize, CurrentSize, RemainingSize;
BOOLEAN FailedInProbe = FALSE, FailedInMapping = FALSE, FailedInMoving;
@@ -82,8 +82,8 @@
/* Calculate the maximum amount of data to move */
TotalSize = (MI_MAPPED_COPY_PAGES - 2) * PAGE_SIZE;
if (BufferSize <= TotalSize) TotalSize = BufferSize;
- CurrentSize = BufferSize;
- RemainingSize = TotalSize;
+ CurrentSize = TotalSize;
+ RemainingSize = BufferSize;
/* Loop as long as there is still data */
while (RemainingSize > 0)
@@ -117,7 +117,7 @@
}
/* Initialize and probe and lock the MDL */
- MmInitializeMdl (Mdl, CurrentAddress, CurrentSize);
+ MmInitializeMdl (Mdl, CurrentAddress, CurrentSize);
MmProbeAndLockPages (Mdl, PreviousMode, IoReadAccess);
PagesLocked = TRUE;
@@ -236,8 +236,8 @@
/* Calculate the maximum amount of data to move */
TotalSize = MI_MAX_TRANSFER_SIZE;
if (BufferSize <= MI_MAX_TRANSFER_SIZE) TotalSize = BufferSize;
- CurrentSize = BufferSize;
- RemainingSize = TotalSize;
+ CurrentSize = TotalSize;
+ RemainingSize = BufferSize;
/* Check if we can use the stack */
if (BufferSize <= MI_POOL_COPY_BYTES)
More information about the Ros-diffs
mailing list