max_buffer is optional in the kernel (depends on the CONFIG_TRACE_MAX_TRACE option). Don't fail if it isn't available. --- extensions/trace.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/extensions/trace.c b/extensions/trace.c index 9f81568..c269f4c 100644 --- a/extensions/trace.c +++ b/extensions/trace.c @@ -34,6 +34,10 @@ static int encapsulated_current_trace; * trace_buffer is supported */ static int trace_buffer_available; +/* + * max_buffer is supported + */ +static int max_buffer_available; #define koffset(struct, member) struct##_##member##_offset @@ -163,8 +167,10 @@ static int init_offsets(void) if (trace_buffer_available) { init_offset(trace_array, trace_buffer); - init_offset(trace_array, max_buffer); init_offset(trace_buffer, buffer); + + if (max_buffer_available) + init_offset(trace_array, max_buffer); } else { init_offset(trace_array, buffer); } @@ -448,6 +454,9 @@ out_fail: static int ftrace_int_max_tr_trace(void) { if (trace_buffer_available) { + if (!max_buffer_available) + return 0; + global_max_buffer = global_trace + koffset(trace_array, max_buffer); read_value(max_tr_ring_buffer, global_max_buffer, trace_buffer, buffer); } else { @@ -528,6 +537,9 @@ static int ftrace_init(void) if (MEMBER_EXISTS("trace_array", "trace_buffer")) { trace_buffer_available = 1; + + if (MEMBER_EXISTS("trace_array", "max_buffer")) + max_buffer_available = 1; } else { sym_max_tr_trace = symbol_search("max_tr"); if (sym_max_tr_trace == NULL) -- 1.7.10.4 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility