forked from Minki/linux
perf probe: Release resources on error when handling exit paths
Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Colin King <colin.king@canonical.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-zh2j4iqimralugke5qq7dn6d@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
0325862dc3
commit
60ebc15981
@ -143,6 +143,8 @@ struct strlist *probe_file__get_rawlist(int fd)
|
||||
return NULL;
|
||||
|
||||
sl = strlist__new(NULL, NULL);
|
||||
if (sl == NULL)
|
||||
return NULL;
|
||||
|
||||
fddup = dup(fd);
|
||||
if (fddup < 0)
|
||||
@ -163,14 +165,16 @@ struct strlist *probe_file__get_rawlist(int fd)
|
||||
ret = strlist__add(sl, buf);
|
||||
if (ret < 0) {
|
||||
pr_debug("strlist__add failed (%d)\n", ret);
|
||||
strlist__delete(sl);
|
||||
return NULL;
|
||||
goto out_close_fp;
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
|
||||
return sl;
|
||||
|
||||
out_close_fp:
|
||||
fclose(fp);
|
||||
goto out_free_sl;
|
||||
out_close_fddup:
|
||||
close(fddup);
|
||||
out_free_sl:
|
||||
@ -467,8 +471,10 @@ static int probe_cache__load(struct probe_cache *pcache)
|
||||
if (fddup < 0)
|
||||
return -errno;
|
||||
fp = fdopen(fddup, "r");
|
||||
if (!fp)
|
||||
if (!fp) {
|
||||
close(fddup);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
while (!feof(fp)) {
|
||||
if (!fgets(buf, MAX_CMDLEN, fp))
|
||||
|
Loading…
Reference in New Issue
Block a user