diff options
author | J. Bruce Fields <bfields@redhat.com> | 2015-11-23 17:39:12 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2015-11-24 12:39:18 -0500 |
commit | 50c7b948adbd1f8f0475fa0c92abb51c8a49f847 (patch) | |
tree | 5586fd5053b8daaf342fafc49b54c05d48f82918 /fs/nfsd/nfs4state.c | |
parent | 50043859325b377e728676d31aad7affaf91b2ce (diff) |
nfsd: minor consolidation of mach_cred handling code
Minor cleanup, no change in functionality.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r-- | fs/nfsd/nfs4state.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 641604a221bc..efa3d4c09dab 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -2375,10 +2375,17 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, | |||
2375 | if (exid->flags & ~EXCHGID4_FLAG_MASK_A) | 2375 | if (exid->flags & ~EXCHGID4_FLAG_MASK_A) |
2376 | return nfserr_inval; | 2376 | return nfserr_inval; |
2377 | 2377 | ||
2378 | new = create_client(exid->clname, rqstp, &verf); | ||
2379 | if (new == NULL) | ||
2380 | return nfserr_jukebox; | ||
2381 | |||
2378 | switch (exid->spa_how) { | 2382 | switch (exid->spa_how) { |
2379 | case SP4_MACH_CRED: | 2383 | case SP4_MACH_CRED: |
2380 | if (!svc_rqst_integrity_protected(rqstp)) | 2384 | if (!svc_rqst_integrity_protected(rqstp)) { |
2381 | return nfserr_inval; | 2385 | status = nfserr_inval; |
2386 | goto out_nolock; | ||
2387 | } | ||
2388 | new->cl_mach_cred = true; | ||
2382 | case SP4_NONE: | 2389 | case SP4_NONE: |
2383 | break; | 2390 | break; |
2384 | default: /* checked by xdr code */ | 2391 | default: /* checked by xdr code */ |
@@ -2387,10 +2394,6 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, | |||
2387 | return nfserr_encr_alg_unsupp; | 2394 | return nfserr_encr_alg_unsupp; |
2388 | } | 2395 | } |
2389 | 2396 | ||
2390 | new = create_client(exid->clname, rqstp, &verf); | ||
2391 | if (new == NULL) | ||
2392 | return nfserr_jukebox; | ||
2393 | |||
2394 | /* Cases below refer to rfc 5661 section 18.35.4: */ | 2397 | /* Cases below refer to rfc 5661 section 18.35.4: */ |
2395 | spin_lock(&nn->client_lock); | 2398 | spin_lock(&nn->client_lock); |
2396 | conf = find_confirmed_client_by_name(&exid->clname, nn); | 2399 | conf = find_confirmed_client_by_name(&exid->clname, nn); |
@@ -2452,7 +2455,6 @@ out_new: | |||
2452 | goto out; | 2455 | goto out; |
2453 | } | 2456 | } |
2454 | new->cl_minorversion = cstate->minorversion; | 2457 | new->cl_minorversion = cstate->minorversion; |
2455 | new->cl_mach_cred = (exid->spa_how == SP4_MACH_CRED); | ||
2456 | 2458 | ||
2457 | gen_clid(new, nn); | 2459 | gen_clid(new, nn); |
2458 | add_to_unconfirmed(new); | 2460 | add_to_unconfirmed(new); |
@@ -2470,6 +2472,7 @@ out_copy: | |||
2470 | 2472 | ||
2471 | out: | 2473 | out: |
2472 | spin_unlock(&nn->client_lock); | 2474 | spin_unlock(&nn->client_lock); |
2475 | out_nolock: | ||
2473 | if (new) | 2476 | if (new) |
2474 | expire_client(new); | 2477 | expire_client(new); |
2475 | if (unconf) | 2478 | if (unconf) |