diff options
Diffstat (limited to 'fs/nfs/callback.c')
-rw-r--r-- | fs/nfs/callback.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index 073b4cf67ed9..54de482143cc 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c | |||
@@ -428,6 +428,18 @@ check_gss_callback_principal(struct nfs_client *clp, struct svc_rqst *rqstp) | |||
428 | if (p == NULL) | 428 | if (p == NULL) |
429 | return 0; | 429 | return 0; |
430 | 430 | ||
431 | /* | ||
432 | * Did we get the acceptor from userland during the SETCLIENID | ||
433 | * negotiation? | ||
434 | */ | ||
435 | if (clp->cl_acceptor) | ||
436 | return !strcmp(p, clp->cl_acceptor); | ||
437 | |||
438 | /* | ||
439 | * Otherwise try to verify it using the cl_hostname. Note that this | ||
440 | * doesn't work if a non-canonical hostname was used in the devname. | ||
441 | */ | ||
442 | |||
431 | /* Expect a GSS_C_NT_HOSTBASED_NAME like "nfs@serverhostname" */ | 443 | /* Expect a GSS_C_NT_HOSTBASED_NAME like "nfs@serverhostname" */ |
432 | 444 | ||
433 | if (memcmp(p, "nfs@", 4) != 0) | 445 | if (memcmp(p, "nfs@", 4) != 0) |