mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 04:23:35 +02:00
tracing: Fix memory leaks in create_field_var()
The function create_field_var() allocates memory for 'val' through
create_hist_field() inside parse_atom(), and for 'var' through
create_var(), which in turn allocates var->type and var->var.name
internally. Simply calling kfree() to release these structures will
result in memory leaks.
Use destroy_hist_field() to properly free 'val', and explicitly release
the memory of var->type and var->var.name before freeing 'var' itself.
Link: https://patch.msgid.link/20251106120132.3639920-1-zilin@seu.edu.cn
Fixes: 02205a6752 ("tracing: Add support for 'field variables'")
Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
aa997d2d2a
commit
80f0d631dc
|
|
@ -3272,14 +3272,16 @@ static struct field_var *create_field_var(struct hist_trigger_data *hist_data,
|
|||
var = create_var(hist_data, file, field_name, val->size, val->type);
|
||||
if (IS_ERR(var)) {
|
||||
hist_err(tr, HIST_ERR_VAR_CREATE_FIND_FAIL, errpos(field_name));
|
||||
kfree(val);
|
||||
destroy_hist_field(val, 0);
|
||||
ret = PTR_ERR(var);
|
||||
goto err;
|
||||
}
|
||||
|
||||
field_var = kzalloc(sizeof(struct field_var), GFP_KERNEL);
|
||||
if (!field_var) {
|
||||
kfree(val);
|
||||
destroy_hist_field(val, 0);
|
||||
kfree_const(var->type);
|
||||
kfree(var->var.name);
|
||||
kfree(var);
|
||||
ret = -ENOMEM;
|
||||
goto err;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user