FreeBSD Bugzilla – Attachment 193829 Details for
Bug 228497
[nfs] kernel panic in nfsrv_checksequence
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Free up sessions when an ExchangeID with new co_verifier is done
newverf.patch (text/plain), 1.94 KB, created by
Rick Macklem
on 2018-05-29 21:19:16 UTC
(
hide
)
Description:
Free up sessions when an ExchangeID with new co_verifier is done
Filename:
MIME Type:
Creator:
Rick Macklem
Created:
2018-05-29 21:19:16 UTC
Size:
1.94 KB
patch
obsolete
>--- fs/nfsserver/nfs_nfsdstate.c.nonewverf 2018-05-11 18:34:14.971756000 -0400 >+++ fs/nfsserver/nfs_nfsdstate.c 2018-05-12 16:01:10.277488000 -0400 >@@ -180,9 +180,10 @@ nfsrv_setclient(struct nfsrv_descript *n > nfsquad_t *clientidp, nfsquad_t *confirmp, NFSPROC_T *p) > { > struct nfsclient *clp = NULL, *new_clp = *new_clpp; >- int i, error = 0; >+ int i, error = 0, ret; > struct nfsstate *stp, *tstp; > struct sockaddr_in *sad, *rad; >+ struct nfsdsession *sep, *nsep; > int zapit = 0, gotit, hasstate = 0, igotlock; > static u_int64_t confirm_index = 0; > >@@ -352,6 +353,15 @@ nfsrv_setclient(struct nfsrv_descript *n > * can be thrown away once the SETCLIENTID_CONFIRM occurs. > */ > LIST_REMOVE(clp, lc_hash); >+ >+ /* Get rid of all sessions on this clientid. */ >+ LIST_FOREACH_SAFE(sep, &clp->lc_session, sess_list, nsep) { >+ ret = nfsrv_freesession(sep, NULL); >+ if (ret != 0) >+ printf("nfsrv_setclient: verifier changed free" >+ " session failed=%d\n", ret); >+ } >+ > new_clp->lc_flags |= LCL_NEEDSCONFIRM; > if ((nd->nd_flag & ND_NFSV41) != 0) > new_clp->lc_confirm.lval[0] = confirmp->lval[0] = >@@ -387,6 +397,7 @@ nfsrv_setclient(struct nfsrv_descript *n > LIST_FOREACH(tstp, &new_clp->lc_stateid[i], ls_hash) > tstp->ls_clp = new_clp; > } >+ LIST_INIT(&new_clp->lc_session); > LIST_INSERT_HEAD(NFSCLIENTHASH(new_clp->lc_clientid), new_clp, > lc_hash); > nfsstatsv1.srvclients++; >@@ -451,6 +462,7 @@ nfsrv_setclient(struct nfsrv_descript *n > LIST_FOREACH(tstp, &new_clp->lc_stateid[i], ls_hash) > tstp->ls_clp = new_clp; > } >+ LIST_INIT(&new_clp->lc_session); > LIST_INSERT_HEAD(NFSCLIENTHASH(new_clp->lc_clientid), new_clp, > lc_hash); > nfsstatsv1.srvclients++; >@@ -5982,7 +5994,7 @@ nfsrv_freesession(struct nfsdsession *se > if (sep->sess_refcnt > 0) { > NFSUNLOCKSESSION(shp); > NFSUNLOCKSTATE(); >- return (0); >+ return (NFSERR_BACKCHANBUSY); > } > LIST_REMOVE(sep, sess_hash); > LIST_REMOVE(sep, sess_list);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 228497
: 193829 |
193832
|
193840