Author: ion
Date: Thu Oct 4 06:19:42 2012
New Revision: 57475
URL:
http://svn.reactos.org/svn/reactos?rev=57475&view=rev
Log:
[NTOSKRNL]: CORE-6698 #resolve #time 5m #comment Add correct error handling during session
space view mapping.
Modified:
trunk/reactos/ntoskrnl/mm/ARM3/section.c
Modified: trunk/reactos/ntoskrnl/mm/ARM3/section.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/section.c…
==============================================================================
--- trunk/reactos/ntoskrnl/mm/ARM3/section.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/ARM3/section.c [iso-8859-1] Thu Oct 4 06:19:42 2012
@@ -1021,8 +1021,10 @@
/* Check if the caller wanted a larger section than the view */
if (*ViewSize > SectionSize)
{
- /* We should probably fail. FIXME TODO */
- ASSERT(FALSE);
+ /* Fail */
+ DPRINT1("View is too large\n");
+ MiDereferenceControlArea(ControlArea);
+ return STATUS_INVALID_VIEW_SIZE;
}
/* Get the number of 64K buckets required for this mapping */
@@ -1032,14 +1034,22 @@
/* Check if the view is more than 4GB large */
if (Buckets >= MI_SYSTEM_VIEW_BUCKET_SIZE)
{
- /* We should probably fail */
- ASSERT(FALSE);
+ /* Fail */
+ DPRINT1("View is too large\n");
+ MiDereferenceControlArea(ControlArea);
+ return STATUS_INVALID_VIEW_SIZE;
}
/* Insert this view into system space and get a base address for it */
Base = MiInsertInSystemSpace(Session, Buckets, ControlArea);
- ASSERT(Base);
-
+ if (!Base)
+ {
+ /* Fail */
+ DPRINT1("Out of system space\n");
+ MiDereferenceControlArea(ControlArea);
+ return STATUS_NO_MEMORY;
+ }
+
/* What's the underlying session? */
if (Session == &MmSession)
{