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(-) 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) -- 2.43.0