perf fixes
Subsystems (5)
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: 7b8e6da46b921d30ac1553cac56d8fb74f0b431d perf/x86/p4: Add format attributes
Thanks,
Ingo
------------------>
Oleg Nesterov (1):
tracing, sched, vfs: Fix 'old_pid' usage in trace_sched_process_exec()
Peter Zijlstra (1):
perf/x86/p4: Add format attributes
arch/x86/kernel/cpu/perf_event_p4.c | 13 +++++++++++++ fs/exec.c | 7 ++++--- include/trace/events/sched.h | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-)
arch/x86/kernel/cpu/perf_event_p4.c +13 -0
@@ -1271,6 +1271,17 @@ done:return num ? -EINVAL :0 ; } +PMU_FORMAT_ATTR (cccr,"config:0-31" ); +PMU_FORMAT_ATTR (escr,"config:32-62" ); +PMU_FORMAT_ATTR (ht,"config:63" ); + +static struct attribute *intel_p4_formats_attr[] = { + &format_attr_cccr.attr, + &format_attr_escr.attr, + &format_attr_ht.attr, +NULL , +}; +static __initconst const struct x86_pmu p4_pmu = { .name ="Netburst P4/Xeon" , .handle_irq = p4_pmu_handle_irq,
@@ -1305,6 +1316,8 @@ static __initconst const struct x86_pmu p4_pmu = {* the former idea is taken from OProfile code */ .perfctr_second_write = 1, + + .format_attrs = intel_p4_formats_attr, };__init int p4_pmu_init (void )
fs/exec.c +4 -3
@@ -1370,7 +1370,7 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)unsigned int depth = bprm->recursion_depth;int try,retval;struct linux_binfmt *fmt; -pid_t old_pid; +pid_t old_pid, old_vpid; retval =security_bprm_check (bprm);if (retval)
@@ -1381,8 +1381,9 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)return retval;/* Need to fetch pid before load_binary changes it */ + old_pid = current->pid;rcu_read_lock (); - old_pid =task_pid_nr_ns (current,task_active_pid_ns (current->parent)); + old_vpid =task_pid_nr_ns (current,task_active_pid_ns (current->parent));rcu_read_unlock (); retval = -ENOENT ;
@@ -1405,7 +1406,7 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs)if (retval >=0 ) {if (depth ==0 ) {trace_sched_process_exec (current, old_pid, bprm); -ptrace_event (PTRACE_EVENT_EXEC , old_pid); +ptrace_event (PTRACE_EVENT_EXEC , old_vpid); }put_binfmt (fmt);allow_write_access (bprm->file);
include/trace/events/sched.h +1 -1
@@ -295,7 +295,7 @@ TRACE_EVENT(sched_process_exec,TP_fast_assign ( __assign_str(filename, bprm->filename); __entry->pid = p->pid; - __entry->old_pid = p->pid; + __entry->old_pid = old_pid; ), TP_printk("filename=%s pid=%d old_pid=%d", __get_str(filename),