Hi Patrick On 6/28/21 2:55 PM, Patrick Delaunay wrote: > Handle errors in fuse_hash_value function. > > Signed-off-by: Patrick Delaunay <patrick.delau...@foss.st.com> > --- > > arch/arm/mach-stm32mp/cmd_stm32key.c | 24 +++++++++++++++--------- > 1 file changed, 15 insertions(+), 9 deletions(-) > > diff --git a/arch/arm/mach-stm32mp/cmd_stm32key.c > b/arch/arm/mach-stm32mp/cmd_stm32key.c > index d2045a5983..2529139ebc 100644 > --- a/arch/arm/mach-stm32mp/cmd_stm32key.c > +++ b/arch/arm/mach-stm32mp/cmd_stm32key.c > @@ -25,7 +25,7 @@ static void read_hash_value(u32 addr) > } > } > > -static void fuse_hash_value(u32 addr, bool print) > +static int fuse_hash_value(u32 addr, bool print) > { > struct udevice *dev; > u32 word, val; > @@ -36,21 +36,25 @@ static void fuse_hash_value(u32 addr, bool print) > &dev); > if (ret) { > log_err("Can't find stm32mp_bsec driver\n"); > - return; > + return ret; > } > > for (i = 0; i < STM32_OTP_HASH_KEY_SIZE; i++) { > - if (print) > - printf("Fuse OTP %i : %x\n", > - STM32_OTP_HASH_KEY_START + i, > - __be32_to_cpu(*(u32 *)addr)); > - > word = STM32_OTP_HASH_KEY_START + i; > val = __be32_to_cpu(*(u32 *)addr); > - misc_write(dev, STM32_BSEC_OTP(word), &val, 4); > + if (print) > + printf("Fuse OTP %i : %x\n", word, val); > + > + ret = misc_write(dev, STM32_BSEC_OTP(word), &val, 4); > + if (ret != 4) { > + log_err("Fuse OTP %i failed\n", word); > + return ret; > + } > > addr += 4; > } > + > + return 0; > } > > static int confirm_prog(void) > @@ -104,7 +108,9 @@ static int do_stm32key_fuse(struct cmd_tbl *cmdtp, int > flag, int argc, char *con > if (!yes && !confirm_prog()) > return CMD_RET_FAILURE; > > - fuse_hash_value(addr, !yes); > + if (fuse_hash_value(addr, !yes)) > + return CMD_RET_FAILURE; > + > printf("Hash key updated !\n"); > > return CMD_RET_SUCCESS; > Reviewed-by: Patrice Chotard <patrice.chot...@foss.st.com>
Thanks Patrice