From: Pavel Emelyanov <xemul@parallels.com>
To: "J. Bruce Fields" <bfields@fieldses.org>
Cc: Chuck Lever <chuck.lever@oracle.com>,
Trond Myklebust <Trond.Myklebust@netapp.com>,
linux-nfs@vger.kernel.org
Subject: [PATCH 2/9] sunrpc: Factor out rpc_xprt freeing
Date: Wed, 29 Sep 2010 16:03:13 +0400 [thread overview]
Message-ID: <4CA32B01.9000004@parallels.com> (raw)
In-Reply-To: <4CA32AB4.2090808@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
---
include/linux/sunrpc/xprt.h | 1 +
net/sunrpc/xprt.c | 7 +++++++
net/sunrpc/xprtrdma/transport.c | 7 ++-----
net/sunrpc/xprtsock.c | 12 ++++--------
4 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
index 00f6e3f..af4b560 100644
--- a/include/linux/sunrpc/xprt.h
+++ b/include/linux/sunrpc/xprt.h
@@ -281,6 +281,7 @@ void xprt_release(struct rpc_task *task);
struct rpc_xprt * xprt_get(struct rpc_xprt *xprt);
void xprt_put(struct rpc_xprt *xprt);
struct rpc_xprt * xprt_alloc(int size, int max_req);
+void xprt_free(struct rpc_xprt *);
static inline __be32 *xprt_skip_transport_header(struct rpc_xprt *xprt, __be32 *p)
{
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index 26cbe21..0637340 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -984,6 +984,13 @@ out:
}
EXPORT_SYMBOL_GPL(xprt_alloc);
+void xprt_free(struct rpc_xprt *xprt)
+{
+ kfree(xprt->slot);
+ kfree(xprt);
+}
+EXPORT_SYMBOL_GPL(xprt_free);
+
/**
* xprt_reserve - allocate an RPC request slot
* @task: RPC task requesting a slot allocation
diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c
index 9d77bf2..0f7a1b9 100644
--- a/net/sunrpc/xprtrdma/transport.c
+++ b/net/sunrpc/xprtrdma/transport.c
@@ -251,9 +251,7 @@ xprt_rdma_destroy(struct rpc_xprt *xprt)
xprt_rdma_free_addresses(xprt);
- kfree(xprt->slot);
- xprt->slot = NULL;
- kfree(xprt);
+ xprt_free(xprt);
dprintk("RPC: %s: returning\n", __func__);
@@ -401,8 +399,7 @@ out3:
out2:
rpcrdma_ia_close(&new_xprt->rx_ia);
out1:
- kfree(xprt->slot);
- kfree(xprt);
+ xprt_free(xprt);
return ERR_PTR(rc);
}
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index a7a7638..b1e36ec 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -774,8 +774,7 @@ static void xs_destroy(struct rpc_xprt *xprt)
xs_close(xprt);
xs_free_peer_addresses(xprt);
- kfree(xprt->slot);
- kfree(xprt);
+ xprt_free(xprt);
module_put(THIS_MODULE);
}
@@ -2362,8 +2361,7 @@ static struct rpc_xprt *xs_setup_udp(struct xprt_create *args)
return xprt;
ret = ERR_PTR(-EINVAL);
out_err:
- kfree(xprt->slot);
- kfree(xprt);
+ xprt_free(xprt);
return ret;
}
@@ -2438,8 +2436,7 @@ static struct rpc_xprt *xs_setup_tcp(struct xprt_create *args)
return xprt;
ret = ERR_PTR(-EINVAL);
out_err:
- kfree(xprt->slot);
- kfree(xprt);
+ xprt_free(xprt);
return ret;
}
@@ -2519,8 +2516,7 @@ static struct rpc_xprt *xs_setup_bc_tcp(struct xprt_create *args)
return xprt;
ret = ERR_PTR(-EINVAL);
out_err:
- kfree(xprt->slot);
- kfree(xprt);
+ xprt_free(xprt);
return ret;
}
--
1.5.5.6
next prev parent reply other threads:[~2010-09-29 12:03 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-29 12:01 [PATCH v3 0/9] sunrpc: Create sockets in namespaces Pavel Emelyanov
2010-09-29 12:02 ` [PATCH 1/9] sunrpc: Factor out rpc_xprt allocation Pavel Emelyanov
2010-09-29 12:03 ` Pavel Emelyanov [this message]
2010-09-29 12:03 ` [PATCH 3/9] sunrpc: Add net argument to svc_create_xprt Pavel Emelyanov
2010-09-29 12:04 ` [PATCH 4/9] sunrpc: Pull net argument downto svc_create_socket Pavel Emelyanov
2010-09-29 12:04 ` [PATCH 5/9] sunrpc: Add net to rpc_create_args Pavel Emelyanov
2010-09-29 12:05 ` [PATCH 6/9] sunrpc: Add net to xprt_create Pavel Emelyanov
2010-09-29 12:05 ` [PATCH 7/9] sunrpc: Tag rpc_xprt with net Pavel Emelyanov
2010-09-29 12:06 ` [PATCH 8/9] net: Export __sock_create Pavel Emelyanov
2010-09-29 12:06 ` [PATCH 9/9] sunrpc: Create sockets in net namespaces Pavel Emelyanov
2010-09-29 21:45 ` [PATCH v3 0/9] sunrpc: Create sockets in namespaces J. Bruce Fields
2010-09-29 21:49 ` Chuck Lever
2010-09-30 5:46 ` Pavel Emelyanov
2010-09-30 15:16 ` Chuck Lever
2010-09-30 15:34 ` Pavel Emelyanov
2010-10-01 22:05 ` J. Bruce Fields
2011-07-20 21:10 ` J. Bruce Fields
2011-07-21 7:50 ` Pavel Emelyanov
2011-07-21 16:30 ` J. Bruce Fields
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CA32B01.9000004@parallels.com \
--to=xemul@parallels.com \
--cc=Trond.Myklebust@netapp.com \
--cc=bfields@fieldses.org \
--cc=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.