Message ID | 532FA16A.9070509@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Mar 24, 2014 at 11:07:22AM +0800, Kinglong Mee wrote: > Creating xprt failed after xs_format_peer_addresses, > sunrpc must free those memory of peer addresses in xprt. Looks right, thanks--applying. --b. > > Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> > --- > net/sunrpc/xprtsock.c | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c > index 0addefc..2cbafa7 100644 > --- a/net/sunrpc/xprtsock.c > +++ b/net/sunrpc/xprtsock.c > @@ -909,6 +909,12 @@ static void xs_tcp_close(struct rpc_xprt *xprt) > xs_tcp_shutdown(xprt); > } > > +static void xs_xprt_free(struct rpc_xprt *xprt) > +{ > + xs_free_peer_addresses(xprt); > + xprt_free(xprt); > +} > + > /** > * xs_destroy - prepare to shutdown a transport > * @xprt: doomed transport > @@ -919,8 +925,7 @@ static void xs_destroy(struct rpc_xprt *xprt) > dprintk("RPC: xs_destroy xprt %p\n", xprt); > > xs_close(xprt); > - xs_free_peer_addresses(xprt); > - xprt_free(xprt); > + xs_xprt_free(xprt); > module_put(THIS_MODULE); > } > > @@ -2744,7 +2749,7 @@ static struct rpc_xprt *xs_setup_local(struct xprt_create *args) > return xprt; > ret = ERR_PTR(-EINVAL); > out_err: > - xprt_free(xprt); > + xs_xprt_free(xprt); > return ret; > } > > @@ -2822,7 +2827,7 @@ static struct rpc_xprt *xs_setup_udp(struct xprt_create *args) > return xprt; > ret = ERR_PTR(-EINVAL); > out_err: > - xprt_free(xprt); > + xs_xprt_free(xprt); > return ret; > } > > @@ -2897,12 +2902,11 @@ static struct rpc_xprt *xs_setup_tcp(struct xprt_create *args) > xprt->address_strings[RPC_DISPLAY_ADDR], > xprt->address_strings[RPC_DISPLAY_PROTO]); > > - > if (try_module_get(THIS_MODULE)) > return xprt; > ret = ERR_PTR(-EINVAL); > out_err: > - xprt_free(xprt); > + xs_xprt_free(xprt); > return ret; > } > > @@ -2985,13 +2989,12 @@ static struct rpc_xprt *xs_setup_bc_tcp(struct xprt_create *args) > */ > xprt_set_connected(xprt); > > - > if (try_module_get(THIS_MODULE)) > return xprt; > xprt_put(xprt); > ret = ERR_PTR(-EINVAL); > out_err: > - xprt_free(xprt); > + xs_xprt_free(xprt); > return ret; > } > > -- > 1.8.5.3 > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 0addefc..2cbafa7 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -909,6 +909,12 @@ static void xs_tcp_close(struct rpc_xprt *xprt) xs_tcp_shutdown(xprt); } +static void xs_xprt_free(struct rpc_xprt *xprt) +{ + xs_free_peer_addresses(xprt); + xprt_free(xprt); +} + /** * xs_destroy - prepare to shutdown a transport * @xprt: doomed transport @@ -919,8 +925,7 @@ static void xs_destroy(struct rpc_xprt *xprt) dprintk("RPC: xs_destroy xprt %p\n", xprt); xs_close(xprt); - xs_free_peer_addresses(xprt); - xprt_free(xprt); + xs_xprt_free(xprt); module_put(THIS_MODULE); } @@ -2744,7 +2749,7 @@ static struct rpc_xprt *xs_setup_local(struct xprt_create *args) return xprt; ret = ERR_PTR(-EINVAL); out_err: - xprt_free(xprt); + xs_xprt_free(xprt); return ret; } @@ -2822,7 +2827,7 @@ static struct rpc_xprt *xs_setup_udp(struct xprt_create *args) return xprt; ret = ERR_PTR(-EINVAL); out_err: - xprt_free(xprt); + xs_xprt_free(xprt); return ret; } @@ -2897,12 +2902,11 @@ static struct rpc_xprt *xs_setup_tcp(struct xprt_create *args) xprt->address_strings[RPC_DISPLAY_ADDR], xprt->address_strings[RPC_DISPLAY_PROTO]); - if (try_module_get(THIS_MODULE)) return xprt; ret = ERR_PTR(-EINVAL); out_err: - xprt_free(xprt); + xs_xprt_free(xprt); return ret; } @@ -2985,13 +2989,12 @@ static struct rpc_xprt *xs_setup_bc_tcp(struct xprt_create *args) */ xprt_set_connected(xprt); - if (try_module_get(THIS_MODULE)) return xprt; xprt_put(xprt); ret = ERR_PTR(-EINVAL); out_err: - xprt_free(xprt); + xs_xprt_free(xprt); return ret; }
Creating xprt failed after xs_format_peer_addresses, sunrpc must free those memory of peer addresses in xprt. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> --- net/sunrpc/xprtsock.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)