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

Commit 2002c630 authored by John Garry's avatar John Garry Committed by Greg Kroah-Hartman
Browse files

perf jevents: Fix leak of mapfile memory



[ Upstream commit 3f5777fbaf04c58d940526a22a2e0c813c837936 ]

The memory for global pointer is never freed during normal program
execution, so let's do that in the main function exit as a good
programming practice.

A stray blank line is also removed.

Reported-by: default avatarJiri Olsa <jolsa@redhat.com>
Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: James Clark <james.clark@arm.com>
Cc: Joakim Zhang <qiangqing.zhang@nxp.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will@kernel.org>
Cc: linuxarm@huawei.com
Link: http://lore.kernel.org/lkml/1583406486-154841-2-git-send-email-john.garry@huawei.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 47c5fa5b
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -1064,10 +1064,9 @@ static int process_one_file(const char *fpath, const struct stat *sb,
 */
int main(int argc, char *argv[])
{
	int rc;
	int rc, ret = 0;
	int maxfds;
	char ldirname[PATH_MAX];

	const char *arch;
	const char *output_file;
	const char *start_dirname;
@@ -1138,7 +1137,8 @@ int main(int argc, char *argv[])
		/* Make build fail */
		fclose(eventsfp);
		free_arch_std_events();
		return 1;
		ret = 1;
		goto out_free_mapfile;
	} else if (rc) {
		goto empty_map;
	}
@@ -1156,14 +1156,17 @@ int main(int argc, char *argv[])
		/* Make build fail */
		fclose(eventsfp);
		free_arch_std_events();
		return 1;
		ret = 1;
	}

	return 0;

	goto out_free_mapfile;

empty_map:
	fclose(eventsfp);
	create_empty_mapping(output_file);
	free_arch_std_events();
	return 0;
out_free_mapfile:
	free(mapfile);
	return ret;
}