diff options
author | Denis Vlasenko | 2007-08-28 11:23:23 +0000 |
---|---|---|
committer | Denis Vlasenko | 2007-08-28 11:23:23 +0000 |
commit | 7d8de4d55dbc140ea0dc0131bb0647f9632cc7e9 (patch) | |
tree | b016e9bc3a8ee42e1a0249ea214b8b6e8ec3e55b /util-linux/mount.c | |
parent | 0f214ecef0a65fee01b12e2d75b80c398332b3ba (diff) | |
download | busybox-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.c | 13 |
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: |