• Tom Zanussi's avatar
    tracing: Use strncpy instead of memcpy for string keys in hist triggers · ebca08d7
    Tom Zanussi authored
    commit 9f0bbf31 upstream.
    
    Because there may be random garbage beyond a string's null terminator,
    it's not correct to copy the the complete character array for use as a
    hist trigger key.  This results in multiple histogram entries for the
    'same' string key.
    
    So, in the case of a string key, use strncpy instead of memcpy to
    avoid copying in the extra bytes.
    
    Before, using the gdbus entries in the following hist trigger as an
    example:
    
      # echo 'hist:key=comm' > /sys/kernel/debug/tracing/events/sched/sched_waking/trigger
      # cat /sys/kernel/debug/tracing/events/sched/sched_waking/hist
    
      ...
    
      { comm: ImgDecoder #4                      } hitcount:        203
      { comm: gmain                              } hitcount:        213
      { comm: gmain                              } hitcount:        216
      { comm: StreamTrans #73                    } hitcount:        221
      { comm: mozStorage #3                      } hitcount:        230
      { comm: gdbus                              } hitcount:        233
      { comm: StyleThread#5                      } hitcount:        253
      { comm: gdbus                              } hitcount:        256
      { comm: gdbus                              } hitcount:        260
      { comm: StyleThread#4                      } hitcount:        271
    
      ...
    
      # cat /sys/kernel/debug/tracing/events/sched/sched_waking/hist | egrep gdbus | wc -l
      51
    
    After:
    
      # cat /sys/kernel/debug/tracing/events/sched/sched_waking/hist | egrep gdbus | wc -l
      1
    
    Link: http://lkml.kernel.org/r/50c35ae1267d64eee975b8125e151e600071d4dc.1549309756.git.tom.zanussi@linux.intel.com
    
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: stable@vger.kernel.org
    Fixes: 79e577cb ("tracing: Support string type key properly")
    Signed-off-by: default avatarTom Zanussi <tom.zanussi@linux.intel.com>
    Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    ebca08d7
trace_events_hist.c 133 KB