perf session: Free the ref_reloc_sym memory at the right place
Which is at perf_session__destroy_kernel_maps, counterpart to the
perf_session__create_kernel_maps where the kmap structure is located, just
after the vmlinux_maps.
Make it also check if the kernel maps were actually created, which may not
be the case if, for instance, perf_session__new can't complete due to
permission problems in, for instance, a 'perf report' case, when a
segfault will take place, that is how this was noticed.
The problem was introduced in d65a458
, thus post .35.
This also adds code to release guest machines as them are also created
in perf_session__create_kernel_maps, so should be deleted on this newly
introduced counterpart, perf_session__destroy_kernel_maps.
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
@ -212,11 +212,13 @@ int kallsyms__parse(const char *filename, void *arg,
|
||||
int (*process_symbol)(void *arg, const char *name,
|
||||
char type, u64 start));
|
||||
|
||||
void machine__destroy_kernel_maps(struct machine *self);
|
||||
int __machine__create_kernel_maps(struct machine *self, struct dso *kernel);
|
||||
int machine__create_kernel_maps(struct machine *self);
|
||||
|
||||
int machines__create_kernel_maps(struct rb_root *self, pid_t pid);
|
||||
int machines__create_guest_kernel_maps(struct rb_root *self);
|
||||
void machines__destroy_guest_kernel_maps(struct rb_root *self);
|
||||
|
||||
int symbol__init(void);
|
||||
void symbol__exit(void);
|
||||
|
Reference in New Issue
Block a user