• Daniel Bristot de Oliveira's avatar
    tools/rtla: Fix uninitialized bucket/data->bucket_size warning · 64dc40f7
    Daniel Bristot de Oliveira authored
    When compiling rtla with clang, I am getting the following warnings:
    
    $ make HOSTCC=clang CC=clang LLVM_IAS=1
    
    [..]
    clang -O -g -DVERSION=\"6.8.0-rc3\" -flto=auto -fexceptions
    	-fstack-protector-strong -fasynchronous-unwind-tables
    	-fstack-clash-protection  -Wall -Werror=format-security
    	-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
    	$(pkg-config --cflags libtracefs)
    	-c -o src/osnoise_hist.o src/osnoise_hist.c
    src/osnoise_hist.c:138:6: warning: variable 'bucket' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
      138 |         if (data->bucket_size)
          |             ^~~~~~~~~~~~~~~~~
    src/osnoise_hist.c:149:6: note: uninitialized use occurs here
      149 |         if (bucket < entries)
          |             ^~~~~~
    src/osnoise_hist.c:138:2: note: remove the 'if' if its condition is always true
      138 |         if (data->bucket_size)
          |         ^~~~~~~~~~~~~~~~~~~~~~
      139 |                 bucket = duration / data->bucket_size;
    src/osnoise_hist.c:132:12: note: initialize the variable 'bucket' to silence this warning
      132 |         int bucket;
          |                   ^
          |                    = 0
    1 warning generated.
    
    [...]
    
    clang -O -g -DVERSION=\"6.8.0-rc3\" -flto=auto -fexceptions
    	-fstack-protector-strong -fasynchronous-unwind-tables
    	-fstack-clash-protection  -Wall -Werror=format-security
    	-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
    	$(pkg-config --cflags libtracefs)
    	-c -o src/timerlat_hist.o src/timerlat_hist.c
    src/timerlat_hist.c:181:6: warning: variable 'bucket' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
      181 |         if (data->bucket_size)
          |             ^~~~~~~~~~~~~~~~~
    src/timerlat_hist.c:204:6: note: uninitialized use occurs here
      204 |         if (bucket < entries)
          |             ^~~~~~
    src/timerlat_hist.c:181:2: note: remove the 'if' if its condition is always true
      181 |         if (data->bucket_size)
          |         ^~~~~~~~~~~~~~~~~~~~~~
      182 |                 bucket = latency / data->bucket_size;
    src/timerlat_hist.c:175:12: note: initialize the variable 'bucket' to silence this warning
      175 |         int bucket;
          |                   ^
          |                    = 0
    1 warning generated.
    
    This is a legit warning, but data->bucket_size is always > 0 (see
    timerlat_hist_parse_args()), so the if is not necessary.
    
    Remove the unneeded if (data->bucket_size) to avoid the warning.
    
    Link: https://lkml.kernel.org/r/6e1b1665cd99042ae705b3e0fc410858c4c42346.1707217097.git.bristot@kernel.org
    
    Cc: stable@vger.kernel.org
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Nathan Chancellor <nathan@kernel.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Bill Wendling <morbo@google.com>
    Cc: Justin Stitt <justinstitt@google.com>
    Cc: Donald Zickus <dzickus@redhat.com>
    Fixes: 1eeb6328 ("rtla/timerlat: Add timerlat hist mode")
    Fixes: 829a6c0b ("rtla/osnoise: Add the hist mode")
    Signed-off-by: default avatarDaniel Bristot de Oliveira <bristot@kernel.org>
    64dc40f7
osnoise_hist.c 23 KB