This code is broken since a TRACE_BEGIN_CODE is never sent to the daemon. The data becomes corrupt since the backtrace is interpreted as ibs sample. Signed-off-by: Robert Richter <robert.richter@amd.com>
@@ -557,11 +557,9 @@ void sync_buffer(int cpu)
break;
#ifdef CONFIG_OPROFILE_IBS
case IBS_FETCH_BEGIN:
- state = sb_bt_start;
add_ibs_begin(cpu, IBS_FETCH_CODE, mm);
case IBS_OP_BEGIN:
add_ibs_begin(cpu, IBS_OP_CODE, mm);
#endif
@@ -347,17 +347,11 @@ void oprofile_add_ibs_sample(struct pt_regs * const regs,
fail = fail || add_sample(cpu_buf, ibs_sample[10], ibs_sample[11]);
}
- if (fail)
- goto fail;
-
- if (oprofile_backtrace_depth)
- oprofile_ops.backtrace(regs, oprofile_backtrace_depth);
- return;
+ if (!fail)
+ return;
fail:
cpu_buf->sample_lost_overflow++;