Index: kernel/generic/src/lib/ra.c
===================================================================
--- kernel/generic/src/lib/ra.c	(revision 3342f333f2f11756a7935b9fe1f8accd90e6ef52)
+++ kernel/generic/src/lib/ra.c	(revision bb7e6fc5884dcbae04f9a5a148380199a337427f)
@@ -174,8 +174,22 @@
 }
 
-/** Create arena with initial span. */
-ra_arena_t *ra_arena_create(uintptr_t base, size_t size)
+/** Create an empty arena. */
+ra_arena_t *ra_arena_create(void)
 {
 	ra_arena_t *arena;
+
+	arena = (ra_arena_t *) malloc(sizeof(ra_arena_t), FRAME_ATOMIC);
+	if (!arena)
+		return NULL;
+
+	spinlock_initialize(&arena->lock, "arena_lock");
+	list_initialize(&arena->spans);
+
+	return arena;
+}
+
+/** Add a span to arena. */
+bool ra_span_add(ra_arena_t *arena, uintptr_t base, size_t size)
+{
 	ra_span_t *span;
 
@@ -185,29 +199,4 @@
 	 * slightly change the API of the resource allocator.
 	 */
-	if (base == 0)
-		return NULL;
-
-	arena = (ra_arena_t *) malloc(sizeof(ra_arena_t), FRAME_ATOMIC);
-	if (!arena)
-		return NULL;
-
-	span = ra_span_create(base, size);
-	if (!span) {
-		free(arena);
-		return NULL;
-	}
-
-	spinlock_initialize(&arena->lock, "arena_lock");
-	list_initialize(&arena->spans);
-	list_append(&span->span_link, &arena->spans);
-
-	return arena;
-}
-
-/** Add additional span to arena. */
-bool ra_span_add(ra_arena_t *arena, uintptr_t base, size_t size)
-{
-	ra_span_t *span;
-
 	if (base == 0)
 		return false;
