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) {