diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2014-08-22 15:10:59 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2014-10-23 14:05:11 -0400 |
commit | b0d2e42cce8fbf12998a24abf62a26c895dd2fd2 (patch) | |
tree | 1bbae5a6e95f415e2403aa996dec38c838ffcc39 /fs/nfsd | |
parent | 280caac078d3db075247915f6d2f72315232ed16 (diff) |
NFSD: Always initialize cl_cb_addr
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>
Diffstat (limited to 'fs/nfsd')
-rw-r--r-- | fs/nfsd/nfs4state.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index e9c3afe4b5d3..1afd7d4420bd 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -1440,7 +1440,7 @@ static void init_session(struct svc_rqst *rqstp, struct nfsd4_session *new, stru | |||
1440 | list_add(&new->se_perclnt, &clp->cl_sessions); | 1440 | list_add(&new->se_perclnt, &clp->cl_sessions); |
1441 | spin_unlock(&clp->cl_lock); | 1441 | spin_unlock(&clp->cl_lock); |
1442 | 1442 | ||
1443 | if (cses->flags & SESSION4_BACK_CHAN) { | 1443 | { |
1444 | struct sockaddr *sa = svc_addr(rqstp); | 1444 | struct sockaddr *sa = svc_addr(rqstp); |
1445 | /* | 1445 | /* |
1446 | * This is a little silly; with sessions there's no real | 1446 | * This is a little silly; with sessions there's no real |