perf fixes
Subsystems (2)
Linus,
Please pull the latest perf-urgent-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf-urgent-for-linus
# HEAD: 62a92c8f553e49270a0ee391b8733da71ab0aebc perf/core: Remove a redundant check
A handful of tooling fixes, two PMU driver fixes and a cleanup of redundant code that addresses a security analyzer false positive.
Thanks,
Ingo
------------------>
Alexander Shishkin (1):
perf/core: Remove a redundant check
Kan Liang (1):
perf/x86/intel/uncore: Remove SBOX support for Broadwell server
Vincent Stehlé (1):
perf/x86/intel/rapl: Fix pmus free during cleanup
Wang Nan (3):
perf symbols: Check kptr_restrict for root
perf record: Fix crash when kptr is restricted perf ctf: Convert invalid chars in a string before set value
arch/x86/events/intel/rapl.c | 2 +- arch/x86/events/intel/uncore_snbep.c | 21 ------------------ kernel/events/core.c | 6 ++---- tools/perf/util/data-convert-bt.c | 41 ++++++++++++++++++++++++++++++++++-- tools/perf/util/event.c | 2 ++ tools/perf/util/symbol.c | 16 +++++++------- 6 files changed, 52 insertions(+), 36 deletions(-)
arch/x86/events/intel/rapl.c +1 -1
@@ -714,7 +714,7 @@ static void cleanup_rapl_pmus(void)int i;for (i =0 ; i < rapl_pmus->maxpkg; i++) -kfree (rapl_pmus->pmus + i); +kfree (rapl_pmus->pmus[i]);kfree (rapl_pmus); }
arch/x86/events/intel/uncore_snbep.c +0 -21
@@ -2868,27 +2868,10 @@ static struct intel_uncore_type bdx_uncore_cbox = { .format_group = &hswep_uncore_cbox_format_group, }; -static struct intel_uncore_type bdx_uncore_sbox = { - .name ="sbox" , - .num_counters =4 , - .num_boxes =4 , - .perf_ctr_bits =48 , - .event_ctl =HSWEP_S0_MSR_PMON_CTL0 , - .perf_ctr =HSWEP_S0_MSR_PMON_CTR0 , - .event_mask =HSWEP_S_MSR_PMON_RAW_EVENT_MASK , - .box_ctl =HSWEP_S0_MSR_PMON_BOX_CTL , - .msr_offset =HSWEP_SBOX_MSR_OFFSET , - .ops = &hswep_uncore_sbox_msr_ops, - .format_group = &hswep_uncore_sbox_format_group, -}; - -#define BDX_MSR_UNCORE_SBOX 3 -static struct intel_uncore_type *bdx_msr_uncores[] = { &bdx_uncore_ubox, &bdx_uncore_cbox, &hswep_uncore_pcu, - &bdx_uncore_sbox,NULL , };
@@ -2897,10 +2880,6 @@ void bdx_uncore_cpu_init(void)if (bdx_uncore_cbox.num_boxes > boot_cpu_data.x86_max_cores) bdx_uncore_cbox.num_boxes = boot_cpu_data.x86_max_cores; uncore_msr_uncores = bdx_msr_uncores; - -/* BDX-DE doesn't have SBOX */ -if (boot_cpu_data.x86_model ==86 ) - uncore_msr_uncores[BDX_MSR_UNCORE_SBOX ] =NULL ; }static struct intel_uncore_type bdx_uncore_ha = {
kernel/events/core.c +2 -4
@@ -3862,10 +3862,8 @@ static void _free_event(struct perf_event *event)if (event->ctx)put_ctx (event->ctx); -if (event->pmu) { -exclusive_event_destroy (event); -module_put (event->pmu->module); - } +exclusive_event_destroy (event); +module_put (event->pmu->module);call_rcu (&event->rcu_head, free_event_rcu); }
tools/perf/util/data-convert-bt.c +39 -2
53 lines not on this page · raw message
tools/perf/util/event.c +2 -0
@@ -673,6 +673,8 @@ int perf_event__synthesize_kernel_mmap(struct perf_tool *tool,int err;union perf_event *event; +if (symbol_conf.kptr_restrict) +return -1 ;if (map ==NULL )return -1 ;
tools/perf/util/symbol.c +8 -8
@@ -1933,17 +1933,17 @@ int setup_intlist(struct intlist **list, const char *list_str,static bool symbol__read_kptr_restrict (void ) {bool value = false; +FILE *fp =fopen ("/proc/sys/kernel/kptr_restrict" ,"r" ); -if (geteuid () !=0 ) { -FILE *fp =fopen ("/proc/sys/kernel/kptr_restrict" ,"r" ); -if (fp !=NULL ) { -char line[8 ]; +if (fp !=NULL ) { +char line[8 ]; -if (fgets (line,sizeof (line), fp) !=NULL ) - value =atoi (line) !=0 ; +if (fgets (line,sizeof (line), fp) !=NULL ) + value = (geteuid () !=0 ) ? + (atoi (line) !=0 ) : + (atoi (line) ==2 ); -fclose (fp); - } +fclose (fp); }return value;