From 088176e4e038ed69cc185cd9e86797dae956673b Mon Sep 17 00:00:00 2001 From: Marc Kleine-Budde Date: Fri, 11 Mar 2022 15:50:02 +0100 Subject: [PATCH] mcp251xfd-dump: fail if no registers can be read from regmap file --- mcp251xfd/mcp251xfd-regmap.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/mcp251xfd/mcp251xfd-regmap.c b/mcp251xfd/mcp251xfd-regmap.c index 61105f0..902ef5f 100644 --- a/mcp251xfd/mcp251xfd-regmap.c +++ b/mcp251xfd/mcp251xfd-regmap.c @@ -2,7 +2,7 @@ // // Microchip MCP251xFD Family CAN controller debug tool // -// Copyright (c) 2020 Pengutronix, +// Copyright (c) 2020, 2022 Pengutronix, // Marc Kleine-Budde // @@ -26,21 +26,32 @@ do_mcp251xfd_regmap_read(struct mcp251xfd_priv *priv, FILE *reg_file; uint16_t reg; uint32_t val; + unsigned int n = 0; + int err = 0; reg_file = fopen(file_path, "r"); if (!reg_file) return -errno; while (fscanf(reg_file, "%hx: %x\n", ®, &val) == 2) { - if (reg >= ARRAY_SIZE(mem->buf)) - return -EINVAL; + if (reg >= ARRAY_SIZE(mem->buf)) { + err = -EINVAL; + goto out_close; + } *(uint32_t *)(mem->buf + reg) = val; + + n++; } + printf("regmap: Found %u registers in %s\n", n, file_path); + if (!n) + err = -EINVAL; + + out_close: fclose(reg_file); - return 0; + return err; } int mcp251xfd_regmap_read(struct mcp251xfd_priv *priv,