Index: kernel/generic/src/mm/as.c
===================================================================
--- kernel/generic/src/mm/as.c	(revision cb0827980c0d5865b80a2b77aa6fc4558ad30e40)
+++ kernel/generic/src/mm/as.c	(revision c0697c4cced0c51180b50b6e49c335e4eb0d4d93)
@@ -641,5 +641,5 @@
  */
 int as_area_share(as_t *src_as, uintptr_t src_base, size_t acc_size,
-		  as_t *dst_as, uintptr_t dst_base, int dst_flags_mask)
+    as_t *dst_as, uintptr_t dst_base, int dst_flags_mask)
 {
 	ipl_t ipl;
@@ -703,4 +703,8 @@
 		btree_create(&sh_info->pagemap);
 		src_area->sh_info = sh_info;
+		/*
+		 * Call the backend to setup sharing.
+		 */
+		src_area->backend->share(src_area);
 	} else {
 		mutex_lock(&sh_info->lock);
@@ -708,6 +712,4 @@
 		mutex_unlock(&sh_info->lock);
 	}
-
-	src_area->backend->share(src_area);
 
 	mutex_unlock(&src_area->lock);
Index: kernel/generic/src/mm/backend_elf.c
===================================================================
--- kernel/generic/src/mm/backend_elf.c	(revision cb0827980c0d5865b80a2b77aa6fc4558ad30e40)
+++ kernel/generic/src/mm/backend_elf.c	(revision c0697c4cced0c51180b50b6e49c335e4eb0d4d93)
@@ -305,5 +305,5 @@
 			 */
 			if (!(area->flags & AS_AREA_WRITE))
-				if (base + count*PAGE_SIZE <= start_anon)
+				if (base + count * PAGE_SIZE <= start_anon)
 					continue;
 			
