You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.2 KiB
50 lines
1.2 KiB
From e7623d5ae4724c72e873e8af17f2ed6bfdc54427 Mon Sep 17 00:00:00 2001
|
|
From: Xiao Ni <xni@redhat.com>
|
|
Date: Fri, 26 Jul 2024 15:14:08 +0800
|
|
Subject: [PATCH 142/157] mdadm/mdmon: fix coverity issue RESOURCE_LEAK
|
|
|
|
Fix resource leak problem in mdmon.c
|
|
|
|
Signed-off-by: Xiao Ni <xni@redhat.com>
|
|
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
|
|
---
|
|
mdmon.c | 9 ++++++---
|
|
1 file changed, 6 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/mdmon.c b/mdmon.c
|
|
index cae63841..6e28b56e 100644
|
|
--- a/mdmon.c
|
|
+++ b/mdmon.c
|
|
@@ -456,22 +456,25 @@ static int mdmon(char *devnm, int must_fork, int takeover)
|
|
if (must_fork) {
|
|
if (pipe(pfd) != 0) {
|
|
pr_err("failed to create pipe\n");
|
|
+ close_fd(&mdfd);
|
|
return 1;
|
|
}
|
|
switch(fork()) {
|
|
case -1:
|
|
pr_err("failed to fork: %s\n", strerror(errno));
|
|
+ close_fd(&mdfd);
|
|
return 1;
|
|
case 0: /* child */
|
|
- close(pfd[0]);
|
|
+ close_fd(&pfd[0]);
|
|
break;
|
|
default: /* parent */
|
|
- close(pfd[1]);
|
|
+ close_fd(&pfd[1]);
|
|
if (read(pfd[0], &status, sizeof(status)) != sizeof(status)) {
|
|
wait(&status);
|
|
status = WEXITSTATUS(status);
|
|
}
|
|
- close(pfd[0]);
|
|
+ close_fd(&pfd[0]);
|
|
+ close_fd(&mdfd);
|
|
return status;
|
|
}
|
|
} else
|
|
--
|
|
2.41.0
|
|
|