Ensure that the client lookup is done safely under the client_lock, so
we're not relying on the client_mutex.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
* will be false.
*/
WARN_ON_ONCE(cstate->session);
+ spin_lock(&nn->client_lock);
found = find_confirmed_client(clid, false, nn);
- if (!found)
+ if (!found) {
+ spin_unlock(&nn->client_lock);
return nfserr_expired;
+ }
+ atomic_inc(&found->cl_refcount);
+ spin_unlock(&nn->client_lock);
/* Cache the nfs4_client in cstate! */
cstate->clp = found;
- atomic_inc(&found->cl_refcount);
return nfs_ok;
}