Index: kernel/generic/src/mm/backend_user.c
===================================================================
--- kernel/generic/src/mm/backend_user.c	(revision ae6021df81b7a2a9a1f9798557d070693a922d88)
+++ kernel/generic/src/mm/backend_user.c	(revision 97b8ca970e38244c08a9fa57840bd46ae9acfb8f)
@@ -39,4 +39,5 @@
 #include <mm/as.h>
 #include <mm/page.h>
+#include <mm/frame.h>
 #include <abi/mm/as.h>
 #include <abi/ipc/methods.h>
@@ -50,6 +51,4 @@
 
 static bool user_create(as_area_t *);
-static bool user_resize(as_area_t *, size_t);
-static void user_share(as_area_t *);
 static void user_destroy(as_area_t *);
 
@@ -62,6 +61,6 @@
 mem_backend_t user_backend = {
 	.create = user_create,
-	.resize = user_resize,
-	.share = user_share,
+	.resize = NULL,
+	.share = NULL,
 	.destroy = user_destroy,
 
@@ -81,21 +80,4 @@
 }
 
-bool user_resize(as_area_t *area, size_t new_pages)
-{
-	return true;
-}
-
-/** Share the user-paged address space area.
- *
- * The address space and address space area must be already locked.
- *
- * @param area Address space area to be shared.
- */
-void user_share(as_area_t *area)
-{
-	ASSERT(mutex_locked(&area->as->lock));
-	ASSERT(mutex_locked(&area->lock));
-}
-
 void user_destroy(as_area_t *area)
 {
@@ -105,10 +87,10 @@
 bool user_is_resizable(as_area_t *area)
 {
-	return true;
+	return false;
 }
 
 bool user_is_shareable(as_area_t *area)
 {
-	return true;
+	return false;
 }
 
@@ -182,4 +164,12 @@
 	ASSERT(page_table_locked(area->as));
 	ASSERT(mutex_locked(&area->lock));
+
+	pfn_t pfn = ADDR2PFN(frame);
+	if (find_zone(pfn, 1, 0) != (size_t) -1) {
+		frame_free(frame, 1);
+	} else {
+		/* Nothing to do */
+	}
+		
 }
 
