From 7178c299d727e98370835ba3dde41f91f087e724 Mon Sep 17 00:00:00 2001 From: Zhou Zhengping Date: Wed, 3 May 2017 17:51:57 +0800 Subject: server: fd should be refed before put into fdtable If a network error occurs after we put a fd to fdtable, fds in fdtable will be cleaned up by do_fd_cleanup which will unref the fd and release the fd if the fd hasn't be refed by user. Change-Id: Idbad0fafd005c59398518190845fe137cbf95c60 BUG: 1447609 Signed-off-by: Zhou Zhengping Reviewed-on: https://review.gluster.org/17158 Smoke: Gluster Build System Reviewed-by: Amar Tumballi NetBSD-regression: NetBSD Build System Reviewed-by: Milind Changire CentOS-regression: Gluster Build System Reviewed-by: Jeff Darcy --- xlators/protocol/server/src/server-common.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'xlators/protocol/server/src/server-common.c') diff --git a/xlators/protocol/server/src/server-common.c b/xlators/protocol/server/src/server-common.c index 4a55e7e75f3..1dc3a9cf9bd 100644 --- a/xlators/protocol/server/src/server-common.c +++ b/xlators/protocol/server/src/server-common.c @@ -334,8 +334,8 @@ server_post_open (call_frame_t *frame, xlator_t *this, } fd_bind (fd); - fd_no = gf_fd_unused_get (serv_ctx->fdtable, fd); fd_ref (fd); + fd_no = gf_fd_unused_get (serv_ctx->fdtable, fd); rsp->fd = fd_no; return 0; @@ -364,8 +364,8 @@ server_post_opendir (call_frame_t *frame, xlator_t *this, } fd_bind (fd); - fd_no = gf_fd_unused_get (serv_ctx->fdtable, fd); fd_ref (fd); + fd_no = gf_fd_unused_get (serv_ctx->fdtable, fd); rsp->fd = fd_no; return 0; @@ -414,8 +414,8 @@ server_post_create (call_frame_t *frame, gfs3_create_rsp *rsp, } fd_bind (fd); - fd_no = gf_fd_unused_get (serv_ctx->fdtable, fd); fd_ref (fd); + fd_no = gf_fd_unused_get (serv_ctx->fdtable, fd); if ((fd_no > UINT64_MAX) || (fd == 0)) { op_errno = errno; -- cgit