Merge remote-tracking branch 'torvalds/master' into perf/core
To get closer to upstream and check if we need to sync more UAPI headers, pick up fixes for libbpf that prevent perf's container tests from completing successfuly, etc. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
@@ -1122,7 +1122,7 @@ static int disasm_line__parse(char *line, const char **namep, char **rawp)
|
||||
goto out;
|
||||
|
||||
(*rawp)[0] = tmp;
|
||||
*rawp = skip_spaces(*rawp);
|
||||
*rawp = strim(*rawp);
|
||||
|
||||
return 0;
|
||||
|
||||
|
@@ -537,7 +537,10 @@ size_t cpu_map__snprint_mask(struct perf_cpu_map *map, char *buf, size_t size)
|
||||
unsigned char *bitmap;
|
||||
int last_cpu = cpu_map__cpu(map, map->nr - 1);
|
||||
|
||||
bitmap = zalloc((last_cpu + 7) / 8);
|
||||
if (buf == NULL)
|
||||
return 0;
|
||||
|
||||
bitmap = zalloc(last_cpu / 8 + 1);
|
||||
if (bitmap == NULL) {
|
||||
buf[0] = '\0';
|
||||
return 0;
|
||||
|
@@ -1378,6 +1378,7 @@ static int machine__set_modules_path(struct machine *machine)
|
||||
return map_groups__set_modules_path_dir(&machine->kmaps, modules_path, 0);
|
||||
}
|
||||
int __weak arch__fix_module_text_start(u64 *start __maybe_unused,
|
||||
u64 *size __maybe_unused,
|
||||
const char *name __maybe_unused)
|
||||
{
|
||||
return 0;
|
||||
@@ -1389,7 +1390,7 @@ static int machine__create_module(void *arg, const char *name, u64 start,
|
||||
struct machine *machine = arg;
|
||||
struct map *map;
|
||||
|
||||
if (arch__fix_module_text_start(&start, name) < 0)
|
||||
if (arch__fix_module_text_start(&start, &size, name) < 0)
|
||||
return -1;
|
||||
|
||||
map = machine__findnew_module_map(machine, start, name);
|
||||
|
@@ -222,7 +222,7 @@ struct symbol *machine__find_kernel_symbol_by_name(struct machine *machine,
|
||||
|
||||
struct map *machine__findnew_module_map(struct machine *machine, u64 start,
|
||||
const char *filename);
|
||||
int arch__fix_module_text_start(u64 *start, const char *name);
|
||||
int arch__fix_module_text_start(u64 *start, u64 *size, const char *name);
|
||||
|
||||
int machine__load_kallsyms(struct machine *machine, const char *filename);
|
||||
|
||||
|
@@ -92,6 +92,11 @@ static int prefix_underscores_count(const char *str)
|
||||
return tail - str;
|
||||
}
|
||||
|
||||
void __weak arch__symbols__fixup_end(struct symbol *p, struct symbol *c)
|
||||
{
|
||||
p->end = c->start;
|
||||
}
|
||||
|
||||
const char * __weak arch__normalize_symbol_name(const char *name)
|
||||
{
|
||||
return name;
|
||||
@@ -218,7 +223,7 @@ void symbols__fixup_end(struct rb_root_cached *symbols)
|
||||
curr = rb_entry(nd, struct symbol, rb_node);
|
||||
|
||||
if (prev->end == prev->start && prev->end != curr->start)
|
||||
prev->end = curr->start;
|
||||
arch__symbols__fixup_end(prev, curr);
|
||||
}
|
||||
|
||||
/* Last entry */
|
||||
|
@@ -288,6 +288,7 @@ const char *arch__normalize_symbol_name(const char *name);
|
||||
#define SYMBOL_A 0
|
||||
#define SYMBOL_B 1
|
||||
|
||||
void arch__symbols__fixup_end(struct symbol *p, struct symbol *c);
|
||||
int arch__compare_symbol_names(const char *namea, const char *nameb);
|
||||
int arch__compare_symbol_names_n(const char *namea, const char *nameb,
|
||||
unsigned int n);
|
||||
|
@@ -214,14 +214,24 @@ struct comm *thread__comm(const struct thread *thread)
|
||||
|
||||
struct comm *thread__exec_comm(const struct thread *thread)
|
||||
{
|
||||
struct comm *comm, *last = NULL;
|
||||
struct comm *comm, *last = NULL, *second_last = NULL;
|
||||
|
||||
list_for_each_entry(comm, &thread->comm_list, list) {
|
||||
if (comm->exec)
|
||||
return comm;
|
||||
second_last = last;
|
||||
last = comm;
|
||||
}
|
||||
|
||||
/*
|
||||
* 'last' with no start time might be the parent's comm of a synthesized
|
||||
* thread (created by processing a synthesized fork event). For a main
|
||||
* thread, that is very probably wrong. Prefer a later comm to avoid
|
||||
* that case.
|
||||
*/
|
||||
if (second_last && !last->start && thread->pid_ == thread->tid)
|
||||
return second_last;
|
||||
|
||||
return last;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user