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. Tested by: andreas.nagy@frequentis.com MFC after: 2 months
This commit is contained in:
parent
d465f000e8
commit
fafcbcec14
@ -4255,9 +4255,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
|
||||
|
Loading…
Reference in New Issue
Block a user