[ros-diffs] [blight] 13042: Fix MmAllocatePageForMdl when it cannot allocate as much memory as requested.

blight at svn.reactos.com blight at svn.reactos.com
Fri Jan 14 15:47:05 CET 2005


Fix MmAllocatePageForMdl when it cannot allocate as much memory as
requested.
Modified: trunk/reactos/ntoskrnl/mm/mdl.c
  _____  

Modified: trunk/reactos/ntoskrnl/mm/mdl.c
--- trunk/reactos/ntoskrnl/mm/mdl.c	2005-01-14 14:11:13 UTC (rev
13041)
+++ trunk/reactos/ntoskrnl/mm/mdl.c	2005-01-14 14:47:03 UTC (rev
13042)
@@ -637,10 +637,9 @@

       memory. When a driver wants to access physical memory described
by a
       sub-MDL it must map the sub-MDL using
MmGetSystemAddressForMdlSafe.
    
-    Konstantin Gusev
+      Konstantin Gusev
+      */
    
-*/
-   
    PMDL Mdl;
    PPFN_TYPE Pages;
    ULONG NumberOfPagesWanted, NumberOfPagesAllocated;
@@ -652,7 +651,11 @@
           SkipBytes.QuadPart, Totalbytes);
    
    /* SkipBytes must be a multiple of the page size */
-   ASSERT((SkipBytes.QuadPart % PAGE_SIZE) == 0);
+   if ((SkipBytes.QuadPart % PAGE_SIZE) != 0)
+   {
+      DPRINT1("Warning: SkipBytes is not a multiple of PAGE_SIZE\n");
+      return NULL;
+   }
 
    /* Allocate memory for the MDL */
    Mdl = MmCreateMdl(NULL, 0, Totalbytes);
@@ -690,6 +693,11 @@
       ExFreePool(Mdl);
       Mdl = NULL;
    }
+   else if (NumberOfPagesWanted > 0)
+   {
+      Mdl->ByteCount = (ULONG)(NumberOfPagesAllocated * PAGE_SIZE);
+      /* FIXME: I don't know if Mdl->Size should also be changed --
blight */
+   }
    return Mdl;
 }
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20050114/8bf1fda8/attachment.html


More information about the Ros-diffs mailing list