perf tools: Clear struct machine during machine__init()
authorWang Nan <wangnan0@huawei.com>
Tue, 8 Dec 2015 02:25:44 +0000 (02:25 +0000)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 11 Dec 2015 12:32:41 +0000 (09:32 -0300)
commit93b0ba3c60da89043ce2b9f601cd2b3da408903b
treed91948d40c9ab01a09006a14a02da2721f9d76c2
parent27cfef009ae8a1019d174153987ce22a0e6677fc
perf tools: Clear struct machine during machine__init()

There are so many test cases use stack allocated 'struct machine'.
Including:
  test__hists_link
  test__hists_filter
  test__mmap_thread_lookup
  test__thread_mg_share
  test__hists_output
  test__hists_cumulate

Also, in non-test code (for example, machine__new_host()) there are
code use 'malloc()' to alloc struct machine.

These are dangerous operations, cause some tests fail or hung in
machines__exit(). For example, in

 machines__exit ->
   machine__destroy_kernel_maps ->
     map_groups__remove ->
       maps__remove ->
         pthread_rwlock_wrlock

a incorrectly initialized lock causes unintended behavior.

This patch memset(0) that structure in machine__init() to ensure all
fields in 'struct machine' are initialized to zero.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1449541544-67621-17-git-send-email-wangnan0@huawei.com
[ Use memset, see 'man bzero' ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/machine.c