Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

Pull perf fixes from Ingo Molnar.

* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
perf tools, x86: Build perf on older user-space as well
perf tools: Use scnprintf where applicable
perf tools: Incorrect use of snprintf results in SEGV

+48 -33
+2
tools/perf/Makefile
··· 249 249 LIB_H += util/include/dwarf-regs.h 250 250 LIB_H += util/include/asm/dwarf2.h 251 251 LIB_H += util/include/asm/cpufeature.h 252 + LIB_H += util/include/asm/unistd_32.h 253 + LIB_H += util/include/asm/unistd_64.h 252 254 LIB_H += perf.h 253 255 LIB_H += util/annotate.h 254 256 LIB_H += util/cache.h
+1 -1
tools/perf/arch/powerpc/util/header.c
··· 25 25 26 26 pvr = mfspr(SPRN_PVR); 27 27 28 - nb = snprintf(buffer, sz, "%lu,%lu$", PVR_VER(pvr), PVR_REV(pvr)); 28 + nb = scnprintf(buffer, sz, "%lu,%lu$", PVR_VER(pvr), PVR_REV(pvr)); 29 29 30 30 /* look for end marker to ensure the entire data fit */ 31 31 if (strchr(buffer, '$')) {
+1 -1
tools/perf/arch/x86/util/header.c
··· 48 48 if (family >= 0x6) 49 49 model += ((a >> 16) & 0xf) << 4; 50 50 } 51 - nb = snprintf(buffer, sz, "%s,%u,%u,%u$", vendor, family, model, step); 51 + nb = scnprintf(buffer, sz, "%s,%u,%u,%u$", vendor, family, model, step); 52 52 53 53 /* look for end marker to ensure the entire data fit */ 54 54 if (strchr(buffer, '$')) {
+6
tools/perf/perf.h
··· 10 10 #define rmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory") 11 11 #define cpu_relax() asm volatile("rep; nop" ::: "memory"); 12 12 #define CPUINFO_PROC "model name" 13 + #ifndef __NR_perf_event_open 14 + # define __NR_perf_event_open 336 15 + #endif 13 16 #endif 14 17 15 18 #if defined(__x86_64__) ··· 20 17 #define rmb() asm volatile("lfence" ::: "memory") 21 18 #define cpu_relax() asm volatile("rep; nop" ::: "memory"); 22 19 #define CPUINFO_PROC "model name" 20 + #ifndef __NR_perf_event_open 21 + # define __NR_perf_event_open 298 22 + #endif 23 23 #endif 24 24 25 25 #ifdef __powerpc__
+5 -4
tools/perf/util/color.c
··· 1 + #include <linux/kernel.h> 1 2 #include "cache.h" 2 3 #include "color.h" 3 4 ··· 183 182 } 184 183 185 184 if (perf_use_color_default && *color) 186 - r += snprintf(bf, size, "%s", color); 187 - r += vsnprintf(bf + r, size - r, fmt, args); 185 + r += scnprintf(bf, size, "%s", color); 186 + r += vscnprintf(bf + r, size - r, fmt, args); 188 187 if (perf_use_color_default && *color) 189 - r += snprintf(bf + r, size - r, "%s", PERF_COLOR_RESET); 188 + r += scnprintf(bf + r, size - r, "%s", PERF_COLOR_RESET); 190 189 if (trail) 191 - r += snprintf(bf + r, size - r, "%s", trail); 190 + r += scnprintf(bf + r, size - r, "%s", trail); 192 191 return r; 193 192 } 194 193
+2 -2
tools/perf/util/header.c
··· 280 280 if (realname == NULL || filename == NULL || linkname == NULL) 281 281 goto out_free; 282 282 283 - len = snprintf(filename, size, "%s%s%s", 283 + len = scnprintf(filename, size, "%s%s%s", 284 284 debugdir, is_kallsyms ? "/" : "", realname); 285 285 if (mkdir_p(filename, 0755)) 286 286 goto out_free; ··· 295 295 goto out_free; 296 296 } 297 297 298 - len = snprintf(linkname, size, "%s/.build-id/%.2s", 298 + len = scnprintf(linkname, size, "%s/.build-id/%.2s", 299 299 debugdir, sbuild_id); 300 300 301 301 if (access(linkname, X_OK) && mkdir_p(linkname, 0755))
+15 -15
tools/perf/util/hist.c
··· 768 768 sep ? "%.2f" : " %6.2f%%", 769 769 (period * 100.0) / total); 770 770 else 771 - ret = snprintf(s, size, sep ? "%.2f" : " %6.2f%%", 771 + ret = scnprintf(s, size, sep ? "%.2f" : " %6.2f%%", 772 772 (period * 100.0) / total); 773 773 if (symbol_conf.show_cpu_utilization) { 774 774 ret += percent_color_snprintf(s + ret, size - ret, ··· 791 791 } 792 792 } 793 793 } else 794 - ret = snprintf(s, size, sep ? "%" PRIu64 : "%12" PRIu64 " ", period); 794 + ret = scnprintf(s, size, sep ? "%" PRIu64 : "%12" PRIu64 " ", period); 795 795 796 796 if (symbol_conf.show_nr_samples) { 797 797 if (sep) 798 - ret += snprintf(s + ret, size - ret, "%c%" PRIu64, *sep, nr_events); 798 + ret += scnprintf(s + ret, size - ret, "%c%" PRIu64, *sep, nr_events); 799 799 else 800 - ret += snprintf(s + ret, size - ret, "%11" PRIu64, nr_events); 800 + ret += scnprintf(s + ret, size - ret, "%11" PRIu64, nr_events); 801 801 } 802 802 803 803 if (symbol_conf.show_total_period) { 804 804 if (sep) 805 - ret += snprintf(s + ret, size - ret, "%c%" PRIu64, *sep, period); 805 + ret += scnprintf(s + ret, size - ret, "%c%" PRIu64, *sep, period); 806 806 else 807 - ret += snprintf(s + ret, size - ret, " %12" PRIu64, period); 807 + ret += scnprintf(s + ret, size - ret, " %12" PRIu64, period); 808 808 } 809 809 810 810 if (pair_hists) { ··· 819 819 diff = new_percent - old_percent; 820 820 821 821 if (fabs(diff) >= 0.01) 822 - snprintf(bf, sizeof(bf), "%+4.2F%%", diff); 822 + ret += scnprintf(bf, sizeof(bf), "%+4.2F%%", diff); 823 823 else 824 - snprintf(bf, sizeof(bf), " "); 824 + ret += scnprintf(bf, sizeof(bf), " "); 825 825 826 826 if (sep) 827 - ret += snprintf(s + ret, size - ret, "%c%s", *sep, bf); 827 + ret += scnprintf(s + ret, size - ret, "%c%s", *sep, bf); 828 828 else 829 - ret += snprintf(s + ret, size - ret, "%11.11s", bf); 829 + ret += scnprintf(s + ret, size - ret, "%11.11s", bf); 830 830 831 831 if (show_displacement) { 832 832 if (displacement) 833 - snprintf(bf, sizeof(bf), "%+4ld", displacement); 833 + ret += scnprintf(bf, sizeof(bf), "%+4ld", displacement); 834 834 else 835 - snprintf(bf, sizeof(bf), " "); 835 + ret += scnprintf(bf, sizeof(bf), " "); 836 836 837 837 if (sep) 838 - ret += snprintf(s + ret, size - ret, "%c%s", *sep, bf); 838 + ret += scnprintf(s + ret, size - ret, "%c%s", *sep, bf); 839 839 else 840 - ret += snprintf(s + ret, size - ret, "%6.6s", bf); 840 + ret += scnprintf(s + ret, size - ret, "%6.6s", bf); 841 841 } 842 842 } 843 843 ··· 855 855 if (se->elide) 856 856 continue; 857 857 858 - ret += snprintf(s + ret, size - ret, "%s", sep ?: " "); 858 + ret += scnprintf(s + ret, size - ret, "%s", sep ?: " "); 859 859 ret += se->se_snprintf(he, s + ret, size - ret, 860 860 hists__col_len(hists, se->se_width_idx)); 861 861 }
+1
tools/perf/util/include/asm/unistd_32.h
··· 1 +
+1
tools/perf/util/include/asm/unistd_64.h
··· 1 +
+3
tools/perf/util/sort.c
··· 33 33 } 34 34 } 35 35 va_end(ap); 36 + 37 + if (n >= (int)size) 38 + return size - 1; 36 39 return n; 37 40 } 38 41
+4 -3
tools/perf/util/strbuf.c
··· 1 1 #include "cache.h" 2 + #include <linux/kernel.h> 2 3 3 4 int prefixcmp(const char *str, const char *prefix) 4 5 { ··· 90 89 if (!strbuf_avail(sb)) 91 90 strbuf_grow(sb, 64); 92 91 va_start(ap, fmt); 93 - len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap); 92 + len = vscnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap); 94 93 va_end(ap); 95 94 if (len < 0) 96 - die("your vsnprintf is broken"); 95 + die("your vscnprintf is broken"); 97 96 if (len > strbuf_avail(sb)) { 98 97 strbuf_grow(sb, len); 99 98 va_start(ap, fmt); 100 - len = vsnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap); 99 + len = vscnprintf(sb->buf + sb->len, sb->alloc - sb->len, fmt, ap); 101 100 va_end(ap); 102 101 if (len > strbuf_avail(sb)) { 103 102 die("this should not happen, your snprintf is broken");
+6 -6
tools/perf/util/ui/browsers/hists.c
··· 837 837 unsigned long nr_events = self->stats.nr_events[PERF_RECORD_SAMPLE]; 838 838 839 839 nr_events = convert_unit(nr_events, &unit); 840 - printed = snprintf(bf, size, "Events: %lu%c %s", nr_events, unit, ev_name); 840 + printed = scnprintf(bf, size, "Events: %lu%c %s", nr_events, unit, ev_name); 841 841 842 842 if (thread) 843 - printed += snprintf(bf + printed, size - printed, 843 + printed += scnprintf(bf + printed, size - printed, 844 844 ", Thread: %s(%d)", 845 845 (thread->comm_set ? thread->comm : ""), 846 846 thread->pid); 847 847 if (dso) 848 - printed += snprintf(bf + printed, size - printed, 848 + printed += scnprintf(bf + printed, size - printed, 849 849 ", DSO: %s", dso->short_name); 850 850 return printed; 851 851 } ··· 1095 1095 HE_COLORSET_NORMAL); 1096 1096 1097 1097 nr_events = convert_unit(nr_events, &unit); 1098 - printed = snprintf(bf, sizeof(bf), "%lu%c%s%s", nr_events, 1098 + printed = scnprintf(bf, sizeof(bf), "%lu%c%s%s", nr_events, 1099 1099 unit, unit == ' ' ? "" : " ", ev_name); 1100 1100 slsmg_printf("%s", bf); 1101 1101 ··· 1105 1105 if (!current_entry) 1106 1106 ui_browser__set_color(browser, HE_COLORSET_TOP); 1107 1107 nr_events = convert_unit(nr_events, &unit); 1108 - snprintf(bf, sizeof(bf), ": %ld%c%schunks LOST!", nr_events, 1109 - unit, unit == ' ' ? "" : " "); 1108 + printed += scnprintf(bf, sizeof(bf), ": %ld%c%schunks LOST!", 1109 + nr_events, unit, unit == ' ' ? "" : " "); 1110 1110 warn = bf; 1111 1111 } 1112 1112
+1 -1
tools/perf/util/ui/helpline.c
··· 64 64 static int backlog; 65 65 66 66 pthread_mutex_lock(&ui__lock); 67 - ret = vsnprintf(ui_helpline__last_msg + backlog, 67 + ret = vscnprintf(ui_helpline__last_msg + backlog, 68 68 sizeof(ui_helpline__last_msg) - backlog, format, ap); 69 69 backlog += ret; 70 70