Re: [PATCH 7/17] svcrdma: Fix error handling during listening endpoint creation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, May 02, 2008 at 11:28:39AM -0500, Tom Tucker wrote:
> A listening endpoint isn't known to the generic transport switch until
> the svc_create_xprt function returns without error. Calling
> svc_xprt_put within the xpo_create function causes the module reference
> count to be erroneously decremented.

There's some redundant code in these three error paths; would the usual
kernel-style "goto cleanup" thing help?

--b.

> 
> Signed-off-by: Tom Tucker <tom@xxxxxxxxxxxxxxxxxxxxx>
> 
> ---
>  net/sunrpc/xprtrdma/svc_rdma_transport.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
> index 83818cf..0d9a828 100644
> --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
> +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
> @@ -669,7 +669,7 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv,
>  
>  	listen_id = rdma_create_id(rdma_listen_handler, cma_xprt, RDMA_PS_TCP);
>  	if (IS_ERR(listen_id)) {
> -		svc_xprt_put(&cma_xprt->sc_xprt);
> +		kfree(cma_xprt);
>  		dprintk("svcrdma: rdma_create_id failed = %ld\n",
>  			PTR_ERR(listen_id));
>  		return (void *)listen_id;
> @@ -677,7 +677,7 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv,
>  	ret = rdma_bind_addr(listen_id, sa);
>  	if (ret) {
>  		rdma_destroy_id(listen_id);
> -		svc_xprt_put(&cma_xprt->sc_xprt);
> +		kfree(cma_xprt);
>  		dprintk("svcrdma: rdma_bind_addr failed = %d\n", ret);
>  		return ERR_PTR(ret);
>  	}
> @@ -686,7 +686,7 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv,
>  	ret = rdma_listen(listen_id, RPCRDMA_LISTEN_BACKLOG);
>  	if (ret) {
>  		rdma_destroy_id(listen_id);
> -		svc_xprt_put(&cma_xprt->sc_xprt);
> +		kfree(cma_xprt);
>  		dprintk("svcrdma: rdma_listen failed = %d\n", ret);
>  		return ERR_PTR(ret);
>  	}
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux