> static __be32 nfsd4_get_session_locked(struct nfsd4_session *ses) > { > __be32 status; > @@ -3614,18 +3623,27 @@ static __be32 lookup_clientid(clientid_t *clid, struct nfsd4_session *session, s > { > struct nfs4_client *found; > > + spin_lock(&nn->client_lock); > if (session != NULL) { > found = session->se_client; > if (!same_clid(&found->cl_clientid, clid)) > - return nfserr_stale_clientid; > + goto out_stale; Do we really need the lock for the sessions case? I don't tink se_client can change under us. Btw, I wonder if it makes sense to split the current lookup_clientid into two helpers for the sessions vs non-sessions case as all but one caller already have conditionals for 4.0 vs later anyway, so something like: static struct nfs4_client *client_from_session(struct nfsd4_session *session, clientid_t *clid) { if (!same_clid(&session->se_client->cl_clientid, clid)) return NULL; return session->se_client; } static __be32 lookup_40_client(clientid_t *clid, struct nfsd_net *nn, struct nfs4_client **clp) { ... } -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html