Index: kernel/generic/src/mm/backend_anon.c
===================================================================
--- kernel/generic/src/mm/backend_anon.c	(revision 692bd3f24e18f97d2eb607ff9dbd2219cacf1c63)
+++ kernel/generic/src/mm/backend_anon.c	(revision 9a9c805be5fb4f2fa097947afcec03940ca593f8)
@@ -236,26 +236,13 @@
 		 */
 
-		unsigned int flags;
-
 		if (area->flags & AS_AREA_NORESERVE) {
 			/*
-			 * This is a NORESERVE area, which means that no
-			 * physical memory has been reserved beforehands.
-			 * We therefore need to make an atomic and reserving
-			 * allocation.
+			 * Reserve the memory for this page now.
 			 */
-			flags = FRAME_ATOMIC;
-		} else {
-			/*
-			 * The physical memory has already been reserved
-			 * when this part of the area was created. Avoid
-			 * double reservation by using the appropriate flag.
-			 */
-			flags = FRAME_NO_RESERVE;
+			if (!reserve_try_alloc(1))
+				return AS_PF_FAULT;
 		}
 
-		kpage = km_temporary_page_get(&frame, flags);
-		if (!kpage)
-			return AS_PF_FAULT;
+		kpage = km_temporary_page_get(&frame, FRAME_NO_RESERVE);
 		memsetb((void *) kpage, PAGE_SIZE, 0);
 		km_temporary_page_put(kpage);
