From 7d8de4d55dbc140ea0dc0131bb0647f9632cc7e9 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Tue, 28 Aug 2007 11:23:23 +0000 Subject: [PATCH] mount: don't close fd twice in NFS code --- util-linux/mount.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/util-linux/mount.c b/util-linux/mount.c index e9bf2a8d3..0819be4d1 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -1087,7 +1087,7 @@ static int nfsmount(struct mntent *mp, int vfsflags, char *filteropts) * give up immediately, to avoid the initial timeout. */ if (bg && we_saw_this_host_before(hostname)) { - daemonized = daemonize(); /* parent or error */ + daemonized = daemonize(); if (daemonized <= 0) { /* parent or error */ retval = -daemonized; goto ret; @@ -1178,7 +1178,7 @@ retry: &msock, 0, 0); break; default: - mclient = 0; + mclient = NULL; } if (!mclient) { if (!daemonized && prevt == 0) @@ -1219,8 +1219,9 @@ retry: error_msg_rpc(clnt_sperror(mclient, " ")); auth_destroy(mclient->cl_auth); clnt_destroy(mclient); - mclient = 0; + mclient = NULL; close(msock); + msock = -1; } /* Timeout. We are going to retry... maybe */ @@ -1316,6 +1317,7 @@ prepare_kernel_data: auth_destroy(mclient->cl_auth); clnt_destroy(mclient); close(msock); + msock = -1; if (bg) { /* We must wait until mount directory is available */ @@ -1325,6 +1327,7 @@ prepare_kernel_data: if (!daemonized) { daemonized = daemonize(); if (daemonized <= 0) { /* parent or error */ + // FIXME: parent doesn't close fsock - ??! retval = -daemonized; goto ret; } @@ -1344,14 +1347,14 @@ do_mount: /* perform actual mount */ fail: /* abort */ - if (msock != -1) { + if (msock >= 0) { if (mclient) { auth_destroy(mclient->cl_auth); clnt_destroy(mclient); } close(msock); } - if (fsock != -1) + if (fsock >= 0) close(fsock); ret: