提交 980e5a40 编写于 作者: J J. Bruce Fields

nfsd: fix rsi_cache reference count leak

For some reason we haven't been put()'ing the reference count here.
Signed-off-by: NJ. Bruce Fields <bfields@citi.umich.edu>
上级 5c002b3b
......@@ -975,6 +975,7 @@ static int svcauth_gss_handle_init(struct svc_rqst *rqstp,
struct kvec *resv = &rqstp->rq_res.head[0];
struct xdr_netobj tmpobj;
struct rsi *rsip, rsikey;
int ret;
/* Read the verifier; should be NULL: */
*authp = rpc_autherr_badverf;
......@@ -1014,23 +1015,27 @@ static int svcauth_gss_handle_init(struct svc_rqst *rqstp,
/* No upcall result: */
return SVC_DROP;
case 0:
ret = SVC_DROP;
/* Got an answer to the upcall; use it: */
if (gss_write_init_verf(rqstp, rsip))
return SVC_DROP;
goto out;
if (resv->iov_len + 4 > PAGE_SIZE)
return SVC_DROP;
goto out;
svc_putnl(resv, RPC_SUCCESS);
if (svc_safe_putnetobj(resv, &rsip->out_handle))
return SVC_DROP;
goto out;
if (resv->iov_len + 3 * 4 > PAGE_SIZE)
return SVC_DROP;
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))
return SVC_DROP;
goto out;
}
return SVC_COMPLETE;
ret = SVC_COMPLETE;
out:
cache_put(&rsip->h, &rsi_cache);
return ret;
}
/*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册