Date: Sat, 16 May 2020 02:34:57 +0000 (UTC) From: Rick Macklem <rmacklem@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r361100 - projects/nfs-over-tls/sys/rpc/rpcsec_tls Message-ID: <202005160234.04G2Yv1t099463@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: rmacklem Date: Sat May 16 02:34:56 2020 New Revision: 361100 URL: https://svnweb.freebsd.org/changeset/base/361100 Log: Add fdrop()s to the rpctls syscall for the "fp" reference. Without these fdrop()s, the daemons leaked file descriptors and it also left closed TCP sockets lying around. I didn't realize that falloc() returns with two references, one for the "fd" and one for the "fp". Modified: projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctls_impl.c Modified: projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctls_impl.c ============================================================================== --- projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctls_impl.c Sat May 16 02:29:10 2020 (r361099) +++ projects/nfs-over-tls/sys/rpc/rpcsec_tls/rpctls_impl.c Sat May 16 02:34:56 2020 (r361100) @@ -240,6 +240,7 @@ printf("falloc=%d fd=%d\n", error, fd); rpctls_connect_so = NULL; mtx_unlock(&rpctls_connect_lock); finit(fp, FREAD | FWRITE, DTYPE_SOCKET, so, &socketops); + fdrop(fp, td); /* Drop fp reference. */ td->td_retval[0] = fd; } printf("returning=%d\n", fd); @@ -260,6 +261,7 @@ printf("srv falloc=%d fd=%d\n", error, fd); rpctls_server_so = NULL; mtx_unlock(&rpctls_server_lock); finit(fp, FREAD | FWRITE, DTYPE_SOCKET, so, &socketops); + fdrop(fp, td); /* Drop fp reference. */ td->td_retval[0] = fd; } printf("srv returning=%d\n", fd);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202005160234.04G2Yv1t099463>