71 lines
1.7 KiB
Diff
71 lines
1.7 KiB
Diff
From 4bddf961e18f59b27301b73895c0ae3a6cde9b7b Mon Sep 17 00:00:00 2001
|
|
From: liuchao173 <liuchao173@huawei.com>
|
|
Date: Thu, 7 Nov 2019 09:38:21 +0000
|
|
Subject: [PATCH 8/8] backport: 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 cace4d8..5e5ef9b 100644
|
|
--- a/irqbalance.c
|
|
+++ b/irqbalance.c
|
|
@@ -556,6 +556,7 @@ int init_socket()
|
|
int main(int argc, char** argv)
|
|
{
|
|
sigset_t sigset, old_sigset;
|
|
+ int ret = EXIT_SUCCESS;
|
|
|
|
sigemptyset(&sigset);
|
|
sigaddset(&sigset,SIGINT);
|
|
@@ -636,7 +637,7 @@ int main(int argc, char** argv)
|
|
"single cpu. Shutting down\n";
|
|
|
|
log(TO_ALL, LOG_WARNING, "%s", msg);
|
|
- exit(EXIT_SUCCESS);
|
|
+ goto out;
|
|
}
|
|
|
|
if (!foreground_mode) {
|
|
@@ -673,7 +674,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);
|
|
int *last_interval = &sleep_interval;
|
|
@@ -682,6 +684,7 @@ int main(int argc, char** argv)
|
|
|
|
g_main_loop_quit(main_loop);
|
|
|
|
+out:
|
|
free_object_tree();
|
|
free_cl_opts();
|
|
|
|
@@ -689,9 +692,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.19.1
|
|
|