rcu: trace fix possible mem-leak
In the initialization of the RCU trace module, if rcupreempt_debugfs_init() fails, we never free the the trace buffer. This patch frees the trace buffer in case the debugfs fails. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Reviewed-by: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
dd0078f4f0
commit
5802294f1b
|
@ -308,11 +308,16 @@ static int rcupreempt_debugfs_init(void)
|
||||||
|
|
||||||
static int __init rcupreempt_trace_init(void)
|
static int __init rcupreempt_trace_init(void)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
mutex_init(&rcupreempt_trace_mutex);
|
mutex_init(&rcupreempt_trace_mutex);
|
||||||
rcupreempt_trace_buf = kmalloc(RCUPREEMPT_TRACE_BUF_SIZE, GFP_KERNEL);
|
rcupreempt_trace_buf = kmalloc(RCUPREEMPT_TRACE_BUF_SIZE, GFP_KERNEL);
|
||||||
if (!rcupreempt_trace_buf)
|
if (!rcupreempt_trace_buf)
|
||||||
return 1;
|
return 1;
|
||||||
return rcupreempt_debugfs_init();
|
ret = rcupreempt_debugfs_init();
|
||||||
|
if (ret)
|
||||||
|
kfree(rcupreempt_trace_buf);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit rcupreempt_trace_cleanup(void)
|
static void __exit rcupreempt_trace_cleanup(void)
|
||||||
|
|
Loading…
Reference in New Issue