summaryrefslogtreecommitdiffstats
path: root/net/sunrpc/svc.c
diff options
context:
space:
mode:
authorAnton Arapov <anton@redhat.com>2012-06-21 08:44:47 +0200
committerAnton Arapov <anton@redhat.com>2012-06-21 08:44:47 +0200
commit35df99f47c4246df74ed7571c692138b83c3c486 (patch)
tree1f14dd15cf001e590e7f7406c8e594a0003fcff0 /net/sunrpc/svc.c
parent8a6c6e11d3f0dcecf13668e33f5095b1fe9cb613 (diff)
downloadkernel-uprobes-35df99f47c4246df74ed7571c692138b83c3c486.tar.gz
kernel-uprobes-35df99f47c4246df74ed7571c692138b83c3c486.tar.xz
kernel-uprobes-35df99f47c4246df74ed7571c692138b83c3c486.zip
fedora kernel: 3d47c715a4a94b9d700c9e4ec1fc3a786bfde746v3.4.3-3
Signed-off-by: Anton Arapov <anton@redhat.com>
Diffstat (limited to 'net/sunrpc/svc.c')
-rw-r--r--net/sunrpc/svc.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c
index 4153846984a..b7210f5cc89 100644
--- a/net/sunrpc/svc.c
+++ b/net/sunrpc/svc.c
@@ -407,6 +407,14 @@ static int svc_uses_rpcbind(struct svc_serv *serv)
return 0;
}
+int svc_bind(struct svc_serv *serv, struct net *net)
+{
+ if (!svc_uses_rpcbind(serv))
+ return 0;
+ return svc_rpcb_setup(serv, net);
+}
+EXPORT_SYMBOL_GPL(svc_bind);
+
/*
* Create an RPC service
*/
@@ -471,15 +479,8 @@ __svc_create(struct svc_program *prog, unsigned int bufsize, int npools,
spin_lock_init(&pool->sp_lock);
}
- if (svc_uses_rpcbind(serv)) {
- if (svc_rpcb_setup(serv, current->nsproxy->net_ns) < 0) {
- kfree(serv->sv_pools);
- kfree(serv);
- return NULL;
- }
- if (!serv->sv_shutdown)
- serv->sv_shutdown = svc_rpcb_cleanup;
- }
+ if (svc_uses_rpcbind(serv) && (!serv->sv_shutdown))
+ serv->sv_shutdown = svc_rpcb_cleanup;
return serv;
}
@@ -536,8 +537,6 @@ EXPORT_SYMBOL_GPL(svc_shutdown_net);
void
svc_destroy(struct svc_serv *serv)
{
- struct net *net = current->nsproxy->net_ns;
-
dprintk("svc: svc_destroy(%s, %d)\n",
serv->sv_program->pg_name,
serv->sv_nrthreads);
@@ -552,8 +551,6 @@ svc_destroy(struct svc_serv *serv)
del_timer_sync(&serv->sv_temptimer);
- svc_shutdown_net(serv, net);
-
/*
* The last user is gone and thus all sockets have to be destroyed to
* the point. Check this.