Index: kernel/generic/src/mm/as.c
===================================================================
--- kernel/generic/src/mm/as.c	(revision ae7d03c05f24b857bbbdbcf3dafbf8ecc6c286ab)
+++ kernel/generic/src/mm/as.c	(revision 13db20447e9ad45e946906ed3a8fb2e7b7de7f23)
@@ -620,5 +620,9 @@
 	}
 
-	as_area_t *area = (as_area_t *) malloc(sizeof(as_area_t), 0);
+	as_area_t *area = (as_area_t *) malloc(sizeof(as_area_t), FRAME_ATOMIC);
+	if (!area) {
+		mutex_unlock(&as->lock);
+		return NULL;
+	}
 
 	mutex_initialize(&area->lock, MUTEX_PASSIVE);
@@ -646,5 +650,11 @@
 	 */
 	if (!(attrs & AS_AREA_ATTR_PARTIAL)) {
-		si = (share_info_t *) malloc(sizeof(share_info_t), 0);
+		si = (share_info_t *) malloc(sizeof(share_info_t),
+		    FRAME_ATOMIC);
+		if (!si) {
+			free(area);
+			mutex_unlock(&as->lock);
+			return NULL;
+		}
 		mutex_initialize(&si->lock, MUTEX_PASSIVE);
 		si->refcount = 1;
@@ -1292,5 +1302,11 @@
 
 	/* An array for storing frame numbers */
-	uintptr_t *old_frame = malloc(used_pages * sizeof(uintptr_t), 0);
+	uintptr_t *old_frame = malloc(used_pages * sizeof(uintptr_t),
+	    FRAME_ATOMIC);
+	if (!old_frame) {
+		mutex_unlock(&area->lock);
+		mutex_unlock(&as->lock);
+		return ENOMEM;
+	}
 
 	page_table_lock(as, false);
Index: kernel/generic/src/mm/backend_phys.c
===================================================================
--- kernel/generic/src/mm/backend_phys.c	(revision ae7d03c05f24b857bbbdbcf3dafbf8ecc6c286ab)
+++ kernel/generic/src/mm/backend_phys.c	(revision 13db20447e9ad45e946906ed3a8fb2e7b7de7f23)
@@ -160,5 +160,8 @@
 		phys_shared_data_t *data;
 
-		data = (phys_shared_data_t *) malloc(sizeof(*data), 0);
+		data = (phys_shared_data_t *) malloc(sizeof(*data),
+		    FRAME_ATOMIC);
+		if (!data)
+			return false;
 
 		data->base = area->backend_data.base;
