Hi Michal,

On 8/25/22 11:59, Michal Simek wrote:


On 8/25/22 08:41, Ovidiu Panait wrote:
Drop the unused ret variable from microblaze_cpu_get_desc().

Signed-off-by: Ovidiu Panait <ovpan...@gmail.com>
---

  drivers/cpu/microblaze_cpu.c | 7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/cpu/microblaze_cpu.c b/drivers/cpu/microblaze_cpu.c
index 969a1047e5..4eae06a8a6 100644
--- a/drivers/cpu/microblaze_cpu.c
+++ b/drivers/cpu/microblaze_cpu.c
@@ -88,15 +88,14 @@ static int microblaze_cpu_get_desc(const struct udevice *dev, char *buf,
      struct microblaze_cpuinfo *ci = gd_cpuinfo();
      const char *cpu_ver, *fpga_family;
      u32 cpu_freq_mhz;
-    int ret;
        cpu_freq_mhz = ci->cpu_freq / 1000000;
      cpu_ver = microblaze_lookup_cpu_version_string(ci->ver_code);
      fpga_family = microblaze_lookup_fpga_family_string(ci->fpga_code);
  -    ret = snprintf(buf, size,
-               "MicroBlaze @ %uMHz, Rev: %s, FPGA family: %s",
-               cpu_freq_mhz, cpu_ver, fpga_family);
+    snprintf(buf, size,
+         "MicroBlaze @ %uMHz, Rev: %s, FPGA family: %s",
+         cpu_freq_mhz, cpu_ver, fpga_family);
        return 0;
  }

First of all I think you can remove DECLARE_GLOBAL_DATA_PTR from drivers/cpu/microblaze_cpu.c

gd_cpuinfo() macro expands to "(struct microblaze_cpuinfo *)&gd->arch.cpuinfo", so we need the declaration for gd.


I looked at the code and I think that there are some things what should happen. First of all I would memset by 0 that buf which is passed and I think this should be done in uclass to make sure that you won't show anything what it is on the stack where buf is allocated in cmd/cpu.c for example.

I don't think that the memset is necessary, snprintf will overwrite any previous contents and append the terminating null character after the last byte that was written to the buffer. So no garbage previously present on the stack should be printed when buf is used afterwards, as the string is null-terminated.


The second if snprintf fails we shouldn't ignore that error because if you do that that means that buffer is valid and you can print content.

For cpu_freq_mhz I think that make sense to allocate some space in string. For example %4u gives you exact size GHz should be fine for now. cpu_ver has max size 6 now and family string has 18 chars now.


It means change string to this with some chars on the top should be fine for me.
    ret = snprintf(buf, size,
         "MicroBlaze @ %5uMHz, Rev: %7s, FPGA family: %20s",
         cpu_freq_mhz, cpu_ver, fpga_family);


And then check that ret is equal XX size would be easy for checking and returning 0 if they match.

I agree, the snprintf errors should be handled properly here.


Thanks,

Ovidiu


Thanks,
Michal


Reply via email to