mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
perf machine: Add missing dsos->root rbtree root initialization
A segfault happens on 'perf test hists_link' because we end up using a struct machines on the stack, and then machines__init() was not initializing the newly introduced rb_root, just the existing list_head. When we introduced struct dsos, to group the two ways to store dsos, i.e. the linked list and the rbtree, we didn't turned the initialization done in: machines__init(machines->host) -> machine__init() -> INIT_LIST_HEAD into a dsos__init() to keep on initializing the list_head but _as well_ initializing the rb_root, oops. All worked because outside perf-test we probably zalloc the whole thing which ends up initializing it in to NULL. So the problem looks contained to 'perf test' that uses it on stack, etc. Reported-by: Jiri Olsa <[email protected]> Acked-by: Waiman Long <[email protected]>, Cc: Adrian Hunter <[email protected]>, Cc: Don Zickus <[email protected]> Cc: Douglas Hatch <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Scott J Norton <[email protected]> Cc: Waiman Long <[email protected]>, Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
This commit is contained in:
parent
8885846fc4
commit
e167f995e2
1 changed files with 8 additions and 2 deletions
|
|
@ -13,12 +13,18 @@
|
|||
#include <symbol/kallsyms.h>
|
||||
#include "unwind.h"
|
||||
|
||||
static void dsos__init(struct dsos *dsos)
|
||||
{
|
||||
INIT_LIST_HEAD(&dsos->head);
|
||||
dsos->root = RB_ROOT;
|
||||
}
|
||||
|
||||
int machine__init(struct machine *machine, const char *root_dir, pid_t pid)
|
||||
{
|
||||
map_groups__init(&machine->kmaps);
|
||||
RB_CLEAR_NODE(&machine->rb_node);
|
||||
INIT_LIST_HEAD(&machine->user_dsos.head);
|
||||
INIT_LIST_HEAD(&machine->kernel_dsos.head);
|
||||
dsos__init(&machine->user_dsos);
|
||||
dsos__init(&machine->kernel_dsos);
|
||||
|
||||
machine->threads = RB_ROOT;
|
||||
INIT_LIST_HEAD(&machine->dead_threads);
|
||||
|
|
|
|||
Loading…
Reference in a new issue