[Concept,29/30] fit: Add a helper to iterate through hash/signature nodes

Message ID 20251120025614.2215587-30-sjg@u-boot.org
State New
Headers
Series fit: Improve and test the code to print FIT info |

Commit Message

Simon Glass Nov. 20, 2025, 2:56 a.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

The pattern for iterating through and processing hash/signature subnodes
is repeated in two places. Add a new process_subnodes() helper to reduce
code duplication.

Drop the now-unused ndepth and noffset local variables.

Co-developed-by: Claude <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
---

 boot/fit_print.c | 43 ++++++++++++++++++++++++-------------------
 1 file changed, 24 insertions(+), 19 deletions(-)
  

Patch

diff --git a/boot/fit_print.c b/boot/fit_print.c
index 6772460a151..638f66942e9 100644
--- a/boot/fit_print.c
+++ b/boot/fit_print.c
@@ -283,6 +283,28 @@  static void fit_image_print_verification_data(struct fit_print_ctx *ctx,
 		fit_image_print_data(ctx, noffset, "Sign");
 }
 
+/**
+ * process_subnodes() - process and print verification data for all subnodes
+ * @ctx: pointer to FIT print context
+ * @parent: parent node offset
+ *
+ * Iterates through all direct child nodes of the parent and prints their
+ * verification data (hash/signature information).
+ */
+static void process_subnodes(struct fit_print_ctx *ctx, int parent)
+{
+	const void *fit = ctx->fit;
+	int noffset;
+	int ndepth;
+
+	for (ndepth = 0, noffset = fdt_next_node(fit, parent, &ndepth);
+	     (noffset >= 0) && (ndepth > 0);
+	     noffset = fdt_next_node(fit, noffset, &ndepth)) {
+		if (ndepth == 1)
+			fit_image_print_verification_data(ctx, noffset);
+	}
+}
+
 /**
  * fit_image_print - prints out the FIT component image details
  * @ctx: pointer to FIT print context
@@ -305,8 +327,6 @@  void fit_image_print(struct fit_print_ctx *ctx, int image_noffset)
 	size_t size;
 	ulong load, entry;
 	const void *data;
-	int noffset;
-	int ndepth;
 	int ret;
 
 	/* Mandatory properties */
@@ -366,14 +386,7 @@  void fit_image_print(struct fit_print_ctx *ctx, int image_noffset)
 	}
 
 	/* Process all hash subnodes of the component image node */
-	for (ndepth = 0, noffset = fdt_next_node(fit, image_noffset, &ndepth);
-	     (noffset >= 0) && (ndepth > 0);
-	     noffset = fdt_next_node(fit, noffset, &ndepth)) {
-		if (ndepth == 1) {
-			/* Direct child node of the component image node */
-			fit_image_print_verification_data(ctx, noffset);
-		}
-	}
+	process_subnodes(ctx, image_noffset);
 }
 
 /**
@@ -391,7 +404,6 @@  static void fit_conf_print(struct fit_print_ctx *ctx, int noffset)
 {
 	const void *fit = ctx->fit;
 	const char *uname;
-	int ndepth;
 
 	/* Mandatory properties */
 	emit_desc(ctx, noffset, "Description");
@@ -408,14 +420,7 @@  static void fit_conf_print(struct fit_print_ctx *ctx, int noffset)
 	emit_stringlist(ctx, noffset, FIT_COMPATIBLE_PROP, "Compatible");
 
 	/* Process all hash subnodes of the component configuration node */
-	for (ndepth = 0, noffset = fdt_next_node(fit, noffset, &ndepth);
-	     (noffset >= 0) && (ndepth > 0);
-	     noffset = fdt_next_node(fit, noffset, &ndepth)) {
-		if (ndepth == 1) {
-			/* Direct child node of the component config node */
-			fit_image_print_verification_data(ctx, noffset);
-		}
-	}
+	process_subnodes(ctx, noffset);
 }
 
 void fit_print(struct fit_print_ctx *ctx)