Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Jul 2018 21:07:39 +0000 (UTC)
From:      Rick Macklem <rmacklem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r336518 - stable/10/sys/fs/nfsserver
Message-ID:  <201807192107.w6JL7dmb067946@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rmacklem
Date: Thu Jul 19 21:07:39 2018
New Revision: 336518
URL: https://svnweb.freebsd.org/changeset/base/336518

Log:
  MFC: r333766
  Add a missing nfsrv_freesession() call for an unlikely failure case.
  
  Since NFSv4.1 clients normally create a single session which supports
  both fore and back channels, it is unlikely that a callback will fail
  due to a lack of a back channel.
  However, if this failure occurred, the session wasn't being dereferenced
  and would never be free'd.
  Found by inspection during pNFS server development.

Modified:
  stable/10/sys/fs/nfsserver/nfs_nfsdstate.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/fs/nfsserver/nfs_nfsdstate.c
==============================================================================
--- stable/10/sys/fs/nfsserver/nfs_nfsdstate.c	Thu Jul 19 21:06:58 2018	(r336517)
+++ stable/10/sys/fs/nfsserver/nfs_nfsdstate.c	Thu Jul 19 21:07:39 2018	(r336518)
@@ -4251,9 +4251,10 @@ nfsrv_docallback(struct nfsclient *clp, int procnum,
 	 */
 	(void) newnfs_sndlock(&clp->lc_req.nr_lock);
 	if (clp->lc_req.nr_client == NULL) {
-		if ((clp->lc_flags & LCL_NFSV41) != 0)
+		if ((clp->lc_flags & LCL_NFSV41) != 0) {
 			error = ECONNREFUSED;
-		else if (nd->nd_procnum == NFSV4PROC_CBNULL)
+			nfsrv_freesession(sep, NULL);
+		} else if (nd->nd_procnum == NFSV4PROC_CBNULL)
 			error = newnfs_connect(NULL, &clp->lc_req, cred,
 			    NULL, 1);
 		else



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201807192107.w6JL7dmb067946>