|
@@ -1034,30 +1034,27 @@ static int svcauth_gss_handle_init(struct svc_rqst *rqstp,
|
|
|
rsi_free(&rsikey);
|
|
|
if (!rsip)
|
|
|
return SVC_CLOSE;
|
|
|
- switch (cache_check(&rsi_cache, &rsip->h, &rqstp->rq_chandle)) {
|
|
|
- case -EAGAIN:
|
|
|
- case -ETIMEDOUT:
|
|
|
- case -ENOENT:
|
|
|
+ if (cache_check(&rsi_cache, &rsip->h, &rqstp->rq_chandle) < 0)
|
|
|
/* No upcall result: */
|
|
|
return SVC_CLOSE;
|
|
|
- case 0:
|
|
|
- ret = SVC_CLOSE;
|
|
|
- /* Got an answer to the upcall; use it: */
|
|
|
- if (gss_write_init_verf(rqstp, rsip))
|
|
|
- goto out;
|
|
|
- if (resv->iov_len + 4 > PAGE_SIZE)
|
|
|
- goto out;
|
|
|
- svc_putnl(resv, RPC_SUCCESS);
|
|
|
- if (svc_safe_putnetobj(resv, &rsip->out_handle))
|
|
|
- goto out;
|
|
|
- if (resv->iov_len + 3 * 4 > PAGE_SIZE)
|
|
|
- goto out;
|
|
|
- svc_putnl(resv, rsip->major_status);
|
|
|
- svc_putnl(resv, rsip->minor_status);
|
|
|
- svc_putnl(resv, GSS_SEQ_WIN);
|
|
|
- if (svc_safe_putnetobj(resv, &rsip->out_token))
|
|
|
- goto out;
|
|
|
- }
|
|
|
+
|
|
|
+ ret = SVC_CLOSE;
|
|
|
+ /* Got an answer to the upcall; use it: */
|
|
|
+ if (gss_write_init_verf(rqstp, rsip))
|
|
|
+ goto out;
|
|
|
+ if (resv->iov_len + 4 > PAGE_SIZE)
|
|
|
+ goto out;
|
|
|
+ svc_putnl(resv, RPC_SUCCESS);
|
|
|
+ if (svc_safe_putnetobj(resv, &rsip->out_handle))
|
|
|
+ goto out;
|
|
|
+ if (resv->iov_len + 3 * 4 > PAGE_SIZE)
|
|
|
+ goto out;
|
|
|
+ svc_putnl(resv, rsip->major_status);
|
|
|
+ svc_putnl(resv, rsip->minor_status);
|
|
|
+ svc_putnl(resv, GSS_SEQ_WIN);
|
|
|
+ if (svc_safe_putnetobj(resv, &rsip->out_token))
|
|
|
+ goto out;
|
|
|
+
|
|
|
ret = SVC_COMPLETE;
|
|
|
out:
|
|
|
cache_put(&rsip->h, &rsi_cache);
|