NFSD: Always initialize cl_cb_addr
authorChuck Lever <chuck.lever@oracle.com>
Fri, 22 Aug 2014 19:10:59 +0000 (15:10 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Thu, 23 Oct 2014 18:05:11 +0000 (14:05 -0400)
A client may not want to use the back channel on a transport it sent
CREATE_SESSION on, in which case it clears SESSION4_BACK_CHAN.

However, cl_cb_addr should be populated anyway, to be used if the
client binds other connections to this session. If cl_cb_addr is
not initialized, rpc_create() fails when the server attempts to
set up a back channel on such secondary transports.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c

index e9c3afe4b5d3c306a5dd61692ed34805ca661f7a..1afd7d4420bdc934a982094ca7a41ca6c23fce3b 100644 (file)
@@ -1440,7 +1440,7 @@ static void init_session(struct svc_rqst *rqstp, struct nfsd4_session *new, stru
        list_add(&new->se_perclnt, &clp->cl_sessions);
        spin_unlock(&clp->cl_lock);
 
-       if (cses->flags & SESSION4_BACK_CHAN) {
+       {
                struct sockaddr *sa = svc_addr(rqstp);
                /*
                 * This is a little silly; with sessions there's no real