Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 04662523 authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo
Browse files

perf tools: Introduce zfree

For the frequent idiom of:

   free(ptr);
   ptr = NULL;

Make it expect a pointer to the pointer being freed, so that it becomes
clear at first sight that the variable being freed is being modified.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-pfw02ezuab37kha18wlut7ir@git.kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent f5385650
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -154,8 +154,7 @@ static int perf_session_env__lookup_binutils_path(struct perf_session_env *env,
		}
		if (lookup_path(buf))
			goto out;
		free(buf);
		buf = NULL;
		zfree(&buf);
	}

	if (!strcmp(arch, "arm"))
+1 −2
Original line number Diff line number Diff line
@@ -180,8 +180,7 @@ find_next:
			 * symbol, free he->ms.sym->src to signal we already
			 * processed this symbol.
			 */
			free(notes->src);
			notes->src = NULL;
			zfree(&notes->src);
		}
	}
}
+2 −4
Original line number Diff line number Diff line
@@ -185,8 +185,7 @@ static int perf_evsel__alloc_stat_priv(struct perf_evsel *evsel)

static void perf_evsel__free_stat_priv(struct perf_evsel *evsel)
{
	free(evsel->priv);
	evsel->priv = NULL;
	zfree(&evsel->priv);
}

static int perf_evsel__alloc_prev_raw_counts(struct perf_evsel *evsel)
@@ -208,8 +207,7 @@ static int perf_evsel__alloc_prev_raw_counts(struct perf_evsel *evsel)

static void perf_evsel__free_prev_raw_counts(struct perf_evsel *evsel)
{
	free(evsel->prev_raw_counts);
	evsel->prev_raw_counts = NULL;
	zfree(&evsel->prev_raw_counts);
}

static void perf_evlist__free_stats(struct perf_evlist *evlist)
+1 −2
Original line number Diff line number Diff line
@@ -488,8 +488,7 @@ static const char *cat_backtrace(union perf_event *event,
				 * It seems the callchain is corrupted.
				 * Discard all.
				 */
				free(p);
				p = NULL;
				zfree(&p);
				goto exit;
			}
			continue;
+4 −8
Original line number Diff line number Diff line
@@ -146,8 +146,7 @@ static int perf_evsel__init_tp_ptr_field(struct perf_evsel *evsel,

static void perf_evsel__delete_priv(struct perf_evsel *evsel)
{
	free(evsel->priv);
	evsel->priv = NULL;
	zfree(&evsel->priv);
	perf_evsel__delete(evsel);
}

@@ -165,8 +164,7 @@ static int perf_evsel__init_syscall_tp(struct perf_evsel *evsel, void *handler)
	return -ENOMEM;

out_delete:
	free(evsel->priv);
	evsel->priv = NULL;
	zfree(&evsel->priv);
	return -ENOENT;
}

@@ -1278,10 +1276,8 @@ static size_t syscall_arg__scnprintf_close_fd(char *bf, size_t size,
	size_t printed = syscall_arg__scnprintf_fd(bf, size, arg);
	struct thread_trace *ttrace = arg->thread->priv;

	if (ttrace && fd >= 0 && fd <= ttrace->paths.max) {
		free(ttrace->paths.table[fd]);
		ttrace->paths.table[fd] = NULL;
	}
	if (ttrace && fd >= 0 && fd <= ttrace->paths.max)
		zfree(&ttrace->paths.table[fd]);

	return printed;
}
Loading