Messages in this thread | | | Subject | Re: [PATCH] trace: Add a free on close control mechanism for buffer_size_kb | From | Steven Rostedt <> | Date | Wed, 25 May 2011 23:29:51 -0400 |
| |
On Fri, 2011-04-29 at 16:16 -0700, Vaibhav Nagarnaik wrote:
> +static ssize_t tracing_resize_ring_buffer(unsigned long size) > +{ > + int cpu, ret = 0; > + > + mutex_lock(&trace_types_lock); > + > + tracing_stop(); > + > + /* disable all cpu buffers */ > + for_each_tracing_cpu(cpu) { > + if (global_trace.data[cpu]) > + atomic_inc(&global_trace.data[cpu]->disabled); > + if (max_tr.data[cpu]) > + atomic_inc(&max_tr.data[cpu]->disabled); > + } > + > + if (size != global_trace.entries) > + ret = __tracing_resize_ring_buffer(size); > + > + /* If check pages failed, return ENOMEM */ > + if (tracing_disabled) > + ret = -ENOMEM;
This is incorrect. tracing_disabled is set from __tracing_resize_ring_buffer() if the max buffer can't become the same size as the global buffer.
What you should do is just check if ret is less than zero here.
if (ret < 0) ret = -ENOMEM;
-- Steve
> + > + for_each_tracing_cpu(cpu) { > + if (global_trace.data[cpu]) > + atomic_dec(&global_trace.data[cpu]->disabled); > + if (max_tr.data[cpu]) > + atomic_dec(&max_tr.data[cpu]->disabled); > + } > + > + tracing_start(); > + mutex_unlock(&trace_types_lock); > + > + return ret; > +} > + >
| |