diff options
-rw-r--r-- | fs/nfsd/nfssvc.c | 1 | ||||
-rw-r--r-- | net/sunrpc/svc.c | 12 |
2 files changed, 8 insertions, 5 deletions
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index 0568ff8565b1..89ed04696865 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c | |||
@@ -427,6 +427,7 @@ static struct svc_program nfsd_acl_program = { | |||
427 | .pg_name = "nfsd", | 427 | .pg_name = "nfsd", |
428 | .pg_class = "nfsd", | 428 | .pg_class = "nfsd", |
429 | .pg_stats = &nfsd_acl_svcstats, | 429 | .pg_stats = &nfsd_acl_svcstats, |
430 | .pg_authenticate = &svc_set_client, | ||
430 | }; | 431 | }; |
431 | 432 | ||
432 | static struct svc_stat nfsd_acl_svcstats = { | 433 | static struct svc_stat nfsd_acl_svcstats = { |
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c index e9bd91265f70..5a220b2bb376 100644 --- a/net/sunrpc/svc.c +++ b/net/sunrpc/svc.c | |||
@@ -313,6 +313,11 @@ svc_process(struct svc_serv *serv, struct svc_rqst *rqstp) | |||
313 | rqstp->rq_proc = proc = ntohl(svc_getu32(argv)); /* procedure number */ | 313 | rqstp->rq_proc = proc = ntohl(svc_getu32(argv)); /* procedure number */ |
314 | 314 | ||
315 | progp = serv->sv_program; | 315 | progp = serv->sv_program; |
316 | |||
317 | for (progp = serv->sv_program; progp; progp = progp->pg_next) | ||
318 | if (prog == progp->pg_prog) | ||
319 | break; | ||
320 | |||
316 | /* | 321 | /* |
317 | * Decode auth data, and add verifier to reply buffer. | 322 | * Decode auth data, and add verifier to reply buffer. |
318 | * We do this before anything else in order to get a decent | 323 | * We do this before anything else in order to get a decent |
@@ -320,7 +325,7 @@ svc_process(struct svc_serv *serv, struct svc_rqst *rqstp) | |||
320 | */ | 325 | */ |
321 | auth_res = svc_authenticate(rqstp, &auth_stat); | 326 | auth_res = svc_authenticate(rqstp, &auth_stat); |
322 | /* Also give the program a chance to reject this call: */ | 327 | /* Also give the program a chance to reject this call: */ |
323 | if (auth_res == SVC_OK) { | 328 | if (auth_res == SVC_OK && progp) { |
324 | auth_stat = rpc_autherr_badcred; | 329 | auth_stat = rpc_autherr_badcred; |
325 | auth_res = progp->pg_authenticate(rqstp); | 330 | auth_res = progp->pg_authenticate(rqstp); |
326 | } | 331 | } |
@@ -340,10 +345,7 @@ svc_process(struct svc_serv *serv, struct svc_rqst *rqstp) | |||
340 | case SVC_COMPLETE: | 345 | case SVC_COMPLETE: |
341 | goto sendit; | 346 | goto sendit; |
342 | } | 347 | } |
343 | 348 | ||
344 | for (progp = serv->sv_program; progp; progp = progp->pg_next) | ||
345 | if (prog == progp->pg_prog) | ||
346 | break; | ||
347 | if (progp == NULL) | 349 | if (progp == NULL) |
348 | goto err_bad_prog; | 350 | goto err_bad_prog; |
349 | 351 | ||