Index: kernel/generic/include/mm/as.h
===================================================================
--- kernel/generic/include/mm/as.h	(revision deacd722f7dca626637926215ebe69ffd2fd67f5)
+++ kernel/generic/include/mm/as.h	(revision b389f95fd25d0be6a3cd052888913d93795b9d83)
@@ -325,5 +325,5 @@
 
 /* Introspection functions. */
-extern void as_get_area_info(as_t *, as_area_info_t **, size_t *);
+extern as_area_info_t *as_get_area_info(as_t *, size_t *);
 extern void as_print(as_t *);
 
Index: kernel/generic/src/mm/as.c
===================================================================
--- kernel/generic/src/mm/as.c	(revision deacd722f7dca626637926215ebe69ffd2fd67f5)
+++ kernel/generic/src/mm/as.c	(revision b389f95fd25d0be6a3cd052888913d93795b9d83)
@@ -2237,5 +2237,5 @@
  *
  */
-void as_get_area_info(as_t *as, as_area_info_t **obuf, size_t *osize)
+as_area_info_t *as_get_area_info(as_t *as, size_t *osize)
 {
 	mutex_lock(&as->lock);
@@ -2245,5 +2245,9 @@
 
 	size_t isize = area_cnt * sizeof(as_area_info_t);
-	as_area_info_t *info = nfmalloc(isize);
+	as_area_info_t *info = malloc(isize);
+	if (!info) {
+		mutex_unlock(&as->lock);
+		return NULL;
+	}
 
 	/* Record area data. */
@@ -2267,6 +2271,6 @@
 	mutex_unlock(&as->lock);
 
-	*obuf = info;
 	*osize = isize;
+	return info;
 }
 
Index: kernel/generic/src/udebug/udebug_ipc.c
===================================================================
--- kernel/generic/src/udebug/udebug_ipc.c	(revision deacd722f7dca626637926215ebe69ffd2fd67f5)
+++ kernel/generic/src/udebug/udebug_ipc.c	(revision b389f95fd25d0be6a3cd052888913d93795b9d83)
@@ -266,5 +266,5 @@
 	size_t data_size;
 	size_t buf_size;
-	void *data;
+	as_area_info_t *data;
 
 	uspace_addr = IPC_GET_ARG2(call->data);	/* Destination address */
@@ -274,5 +274,10 @@
 	 * Read area list.
 	 */
-	as_get_area_info(AS, (as_area_info_t **) &data, &data_size);
+	data = as_get_area_info(AS, &data_size);
+	if (!data) {
+		IPC_SET_RETVAL(call->data, ENOMEM);
+		ipc_answer(&TASK->kb.box, call);
+		return;
+	}
 
 	/* Copy MAX(buf_size, data_size) bytes */
@@ -297,5 +302,5 @@
 
 	IPC_SET_ARG3(call->data, data_size);
-	call->buffer = data;
+	call->buffer = (uint8_t *) data;
 
 	ipc_answer(&TASK->kb.box, call);
