diff --git a/lib/binman.c b/lib/binman.c
index f027d1b..b6d9dff 100644
--- a/lib/binman.c
+++ b/lib/binman.c
@@ -30,6 +30,34 @@
 
 static struct binman_info *binman;
 
+/**
+ * find_image_node() - Find the top-level binman node
+ *
+ * Finds the binman node which can be used to load entries. The correct node
+ * depends on whether multiple-images is in use.
+ *
+ * @nodep: Returns the node found, on success
+ * @return 0 if OK, , -EINVAL if there is no /binman node, -ECHILD if multiple
+ * images are being used but the first image is not available
+ */
+static int find_image_node(ofnode *nodep)
+{
+	ofnode node;
+
+	node = ofnode_path("/binman");
+	if (!ofnode_valid(node))
+		return log_msg_ret("binman node", -EINVAL);
+	if (ofnode_read_bool(node, "multiple-images")) {
+		node = ofnode_first_subnode(node);
+
+		if (!ofnode_valid(node))
+			return log_msg_ret("first image", -ECHILD);
+	}
+	*nodep = node;
+
+	return 0;
+}
+
 static int binman_entry_find_internal(ofnode node, const char *name,
 				      struct binman_entry *entry)
 {
@@ -90,19 +118,14 @@
 
 int binman_init(void)
 {
+	int ret;
+
 	binman = malloc(sizeof(struct binman_info));
 	if (!binman)
 		return log_msg_ret("space for binman", -ENOMEM);
-	binman->image = ofnode_path("/binman");
-	if (!ofnode_valid(binman->image))
-		return log_msg_ret("binman node", -EINVAL);
-	if (ofnode_read_bool(binman->image, "multiple-images")) {
-		ofnode node = ofnode_first_subnode(binman->image);
-
-		if (!ofnode_valid(node))
-			return log_msg_ret("first image", -ENOENT);
-		binman->image = node;
-	}
+	ret = find_image_node(&binman->image);
+	if (ret)
+		return log_msg_ret("node", -ENOENT);
 	binman_set_rom_offset(ROM_OFFSET_NONE);
 
 	return 0;
