From: NeilBrown Date: Mon, 7 Nov 2011 00:44:21 +0000 (+1100) Subject: mdmon: avoid using victim_sock when it is -1. X-Git-Tag: mdadm-3.2.3~63 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=88e5516ea914f0e9d433a50dc0b2867085250308;p=thirdparty%2Fmdadm.git mdmon: avoid using victim_sock when it is -1. It possible that we try to use victim_sock even when we couldn't open it. This is never actually harmful but it looks wrong and it is best to fix it. Signed-off-by: NeilBrown --- 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();