提交 b44eeb4d 编写于 作者: L Linus Torvalds

Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull perf fixes from Ingo Molnar:
 "Misc smaller fixes"

* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  perf/x86: Fix leak in uncore_type_init failure paths
  perf machine: Use map as success in ip__resolve_ams
  perf symbols: Fix crash in elf_section_by_name
  perf trace: Decode architecture-specific signal numbers
...@@ -3334,6 +3334,8 @@ static int __init uncore_type_init(struct intel_uncore_type *type) ...@@ -3334,6 +3334,8 @@ static int __init uncore_type_init(struct intel_uncore_type *type)
if (!pmus) if (!pmus)
return -ENOMEM; return -ENOMEM;
type->pmus = pmus;
type->unconstrainted = (struct event_constraint) type->unconstrainted = (struct event_constraint)
__EVENT_CONSTRAINT(0, (1ULL << type->num_counters) - 1, __EVENT_CONSTRAINT(0, (1ULL << type->num_counters) - 1,
0, type->num_counters, 0, 0); 0, type->num_counters, 0, 0);
...@@ -3369,7 +3371,6 @@ static int __init uncore_type_init(struct intel_uncore_type *type) ...@@ -3369,7 +3371,6 @@ static int __init uncore_type_init(struct intel_uncore_type *type)
} }
type->pmu_group = &uncore_pmu_attr_group; type->pmu_group = &uncore_pmu_attr_group;
type->pmus = pmus;
return 0; return 0;
fail: fail:
uncore_type_exit(type); uncore_type_exit(type);
......
...@@ -825,7 +825,6 @@ static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscal ...@@ -825,7 +825,6 @@ static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscal
P_SIGNUM(PIPE); P_SIGNUM(PIPE);
P_SIGNUM(ALRM); P_SIGNUM(ALRM);
P_SIGNUM(TERM); P_SIGNUM(TERM);
P_SIGNUM(STKFLT);
P_SIGNUM(CHLD); P_SIGNUM(CHLD);
P_SIGNUM(CONT); P_SIGNUM(CONT);
P_SIGNUM(STOP); P_SIGNUM(STOP);
...@@ -841,6 +840,15 @@ static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscal ...@@ -841,6 +840,15 @@ static size_t syscall_arg__scnprintf_signum(char *bf, size_t size, struct syscal
P_SIGNUM(IO); P_SIGNUM(IO);
P_SIGNUM(PWR); P_SIGNUM(PWR);
P_SIGNUM(SYS); P_SIGNUM(SYS);
#ifdef SIGEMT
P_SIGNUM(EMT);
#endif
#ifdef SIGSTKFLT
P_SIGNUM(STKFLT);
#endif
#ifdef SIGSWI
P_SIGNUM(SWI);
#endif
default: break; default: break;
} }
......
...@@ -1213,7 +1213,7 @@ static void ip__resolve_ams(struct machine *machine, struct thread *thread, ...@@ -1213,7 +1213,7 @@ static void ip__resolve_ams(struct machine *machine, struct thread *thread,
*/ */
thread__find_addr_location(thread, machine, m, MAP__FUNCTION, thread__find_addr_location(thread, machine, m, MAP__FUNCTION,
ip, &al); ip, &al);
if (al.sym) if (al.map)
goto found; goto found;
} }
found: found:
......
...@@ -151,15 +151,15 @@ Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep, ...@@ -151,15 +151,15 @@ Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep,
gelf_getshdr(sec, shp); gelf_getshdr(sec, shp);
str = elf_strptr(elf, ep->e_shstrndx, shp->sh_name); str = elf_strptr(elf, ep->e_shstrndx, shp->sh_name);
if (!strcmp(name, str)) { if (str && !strcmp(name, str)) {
if (idx) if (idx)
*idx = cnt; *idx = cnt;
break; return sec;
} }
++cnt; ++cnt;
} }
return sec; return NULL;
} }
#define elf_section__for_each_rel(reldata, pos, pos_mem, idx, nr_entries) \ #define elf_section__for_each_rel(reldata, pos, pos_mem, idx, nr_entries) \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册