71 lines
1.6 KiB
Diff
71 lines
1.6 KiB
Diff
From eab9ac80148b6c70dd025c18ecac86fae6d6bf8e Mon Sep 17 00:00:00 2001
|
|
From: Yunfeng Ye <yeyunfeng@huawei.com>
|
|
Date: Sun, 20 Oct 2019 22:48:22 +0800
|
|
Subject: [PATCH 28/53] fix resource leak on the error paths in main()
|
|
|
|
Currently, both checking for core count < 2 and init_socket() fail, just
|
|
return directly, so lead to resource leak.
|
|
|
|
Make it correct to free resource when on these situation.
|
|
|
|
Signed-off-by: Yunfeng Ye <yeyunfeng@huawei.com>
|
|
---
|
|
irqbalance.c | 12 ++++++++----
|
|
1 file changed, 8 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/irqbalance.c b/irqbalance.c
|
|
index e53bf65..3ff5f13 100644
|
|
--- a/irqbalance.c
|
|
+++ b/irqbalance.c
|
|
@@ -547,6 +547,7 @@ int init_socket()
|
|
int main(int argc, char** argv)
|
|
{
|
|
sigset_t sigset, old_sigset;
|
|
+ int ret = EXIT_SUCCESS;
|
|
|
|
sigemptyset(&sigset);
|
|
sigaddset(&sigset,SIGINT);
|
|
@@ -637,7 +638,7 @@ int main(int argc, char** argv)
|
|
"single cpu. Shutting down\n";
|
|
|
|
log(TO_ALL, LOG_WARNING, "%s", msg);
|
|
- exit(EXIT_SUCCESS);
|
|
+ goto out;
|
|
}
|
|
|
|
|
|
@@ -660,7 +661,8 @@ int main(int argc, char** argv)
|
|
parse_proc_stat();
|
|
|
|
if (init_socket()) {
|
|
- return EXIT_FAILURE;
|
|
+ ret = EXIT_FAILURE;
|
|
+ goto out;
|
|
}
|
|
main_loop = g_main_loop_new(NULL, FALSE);
|
|
last_interval = sleep_interval;
|
|
@@ -669,6 +671,7 @@ int main(int argc, char** argv)
|
|
|
|
g_main_loop_quit(main_loop);
|
|
|
|
+out:
|
|
free_object_tree();
|
|
free_cl_opts();
|
|
|
|
@@ -676,9 +679,10 @@ int main(int argc, char** argv)
|
|
if (!foreground_mode && pidfile)
|
|
unlink(pidfile);
|
|
/* Remove socket */
|
|
- close(socket_fd);
|
|
+ if (socket_fd > 0)
|
|
+ close(socket_fd);
|
|
if (socket_name[0])
|
|
unlink(socket_name);
|
|
|
|
- return EXIT_SUCCESS;
|
|
+ return ret;
|
|
}
|
|
--
|
|
2.23.0
|
|
|