Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

nfsd: minor consolidation of mach_cred handling code

Minor cleanup, no change in functionality.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>

+10 -7
+10 -7
fs/nfsd/nfs4state.c
··· 2375 2375 if (exid->flags & ~EXCHGID4_FLAG_MASK_A) 2376 2376 return nfserr_inval; 2377 2377 2378 + new = create_client(exid->clname, rqstp, &verf); 2379 + if (new == NULL) 2380 + return nfserr_jukebox; 2381 + 2378 2382 switch (exid->spa_how) { 2379 2383 case SP4_MACH_CRED: 2380 - if (!svc_rqst_integrity_protected(rqstp)) 2381 - return nfserr_inval; 2384 + if (!svc_rqst_integrity_protected(rqstp)) { 2385 + status = nfserr_inval; 2386 + goto out_nolock; 2387 + } 2388 + new->cl_mach_cred = true; 2382 2389 case SP4_NONE: 2383 2390 break; 2384 2391 default: /* checked by xdr code */ ··· 2393 2386 case SP4_SSV: 2394 2387 return nfserr_encr_alg_unsupp; 2395 2388 } 2396 - 2397 - new = create_client(exid->clname, rqstp, &verf); 2398 - if (new == NULL) 2399 - return nfserr_jukebox; 2400 2389 2401 2390 /* Cases below refer to rfc 5661 section 18.35.4: */ 2402 2391 spin_lock(&nn->client_lock); ··· 2455 2452 goto out; 2456 2453 } 2457 2454 new->cl_minorversion = cstate->minorversion; 2458 - new->cl_mach_cred = (exid->spa_how == SP4_MACH_CRED); 2459 2455 2460 2456 gen_clid(new, nn); 2461 2457 add_to_unconfirmed(new); ··· 2472 2470 2473 2471 out: 2474 2472 spin_unlock(&nn->client_lock); 2473 + out_nolock: 2475 2474 if (new) 2476 2475 expire_client(new); 2477 2476 if (unconf)