[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