summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mdmon.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/mdmon.c b/mdmon.c
index ee68e3c3..b6ae0e68 100644
--- a/mdmon.c
+++ b/mdmon.c
@@ -189,6 +189,9 @@ static void try_kill_monitor(pid_t pid, char *devname, int sock)
kill(pid, SIGTERM);
+ if (sock < 0)
+ return;
+
/* Wait for monitor to exit by reading from the socket, after
* clearing the non-blocking flag */
fl = fcntl(sock, F_GETFL, 0);
@@ -468,6 +471,7 @@ static int mdmon(char *devname, int devnum, int must_fork, int takeover)
exit(3);
}
close(victim_sock);
+ victim_sock = -1;
}
if (container->ss->load_container(container, mdfd, devname)) {
fprintf(stderr, "mdmon: Cannot load metadata for %s\n",
@@ -501,7 +505,8 @@ static int mdmon(char *devname, int devnum, int must_fork, int takeover)
if (victim > 0) {
try_kill_monitor(victim, container->devname, victim_sock);
- close(victim_sock);
+ if (victim_sock >= 0)
+ close(victim_sock);
}
setsid();