mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
perf trace: Free thread_trace->files table
The fd->pathname table that is kept in 'struct thread_trace' and thus in thread->priv must be freed when a thread is deleted. This was also detected using -fsanitize=address. Acked-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: https://lore.kernel.org/lkml/20230719202951.534582-6-acme@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
7962ef1365
commit
fcca1faf11
|
|
@ -1296,6 +1296,8 @@ static struct thread_trace *thread_trace__new(void)
|
|||
return ttrace;
|
||||
}
|
||||
|
||||
static void thread_trace__free_files(struct thread_trace *ttrace);
|
||||
|
||||
static void thread_trace__delete(void *pttrace)
|
||||
{
|
||||
struct thread_trace *ttrace = pttrace;
|
||||
|
|
@ -1305,6 +1307,7 @@ static void thread_trace__delete(void *pttrace)
|
|||
|
||||
intlist__delete(ttrace->syscall_stats);
|
||||
ttrace->syscall_stats = NULL;
|
||||
thread_trace__free_files(ttrace);
|
||||
zfree(&ttrace->entry_str);
|
||||
free(ttrace);
|
||||
}
|
||||
|
|
@ -1346,6 +1349,17 @@ void syscall_arg__set_ret_scnprintf(struct syscall_arg *arg,
|
|||
|
||||
static const size_t trace__entry_str_size = 2048;
|
||||
|
||||
static void thread_trace__free_files(struct thread_trace *ttrace)
|
||||
{
|
||||
for (int i = 0; i < ttrace->files.max; ++i) {
|
||||
struct file *file = ttrace->files.table + i;
|
||||
zfree(&file->pathname);
|
||||
}
|
||||
|
||||
zfree(&ttrace->files.table);
|
||||
ttrace->files.max = -1;
|
||||
}
|
||||
|
||||
static struct file *thread_trace__files_entry(struct thread_trace *ttrace, int fd)
|
||||
{
|
||||
if (fd < 0)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user