summaryrefslogtreecommitdiff
path: root/util-linux/mount.c
diff options
context:
space:
mode:
authorDenis Vlasenko2007-08-28 11:23:23 +0000
committerDenis Vlasenko2007-08-28 11:23:23 +0000
commit7d8de4d55dbc140ea0dc0131bb0647f9632cc7e9 (patch)
treeb016e9bc3a8ee42e1a0249ea214b8b6e8ec3e55b /util-linux/mount.c
parent0f214ecef0a65fee01b12e2d75b80c398332b3ba (diff)
downloadbusybox-7d8de4d55dbc140ea0dc0131bb0647f9632cc7e9.zip
busybox-7d8de4d55dbc140ea0dc0131bb0647f9632cc7e9.tar.gz
mount: don't close fd twice in NFS code
Diffstat (limited to 'util-linux/mount.c')
-rw-r--r--util-linux/mount.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/util-linux/mount.c b/util-linux/mount.c
index e9bf2a8..0819be4 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: