diff options
Diffstat (limited to 'net/sunrpc/rpcb_clnt.c')
| -rw-r--r-- | net/sunrpc/rpcb_clnt.c | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c index 78ac39fd9fe7..92509ffe15fc 100644 --- a/net/sunrpc/rpcb_clnt.c +++ b/net/sunrpc/rpcb_clnt.c @@ -180,14 +180,16 @@ void rpcb_put_local(struct net *net)  	struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);  	struct rpc_clnt *clnt = sn->rpcb_local_clnt;  	struct rpc_clnt *clnt4 = sn->rpcb_local_clnt4; -	int shutdown; +	int shutdown = 0;  	spin_lock(&sn->rpcb_clnt_lock); -	if (--sn->rpcb_users == 0) { -		sn->rpcb_local_clnt = NULL; -		sn->rpcb_local_clnt4 = NULL; +	if (sn->rpcb_users) { +		if (--sn->rpcb_users == 0) { +			sn->rpcb_local_clnt = NULL; +			sn->rpcb_local_clnt4 = NULL; +		} +		shutdown = !sn->rpcb_users;  	} -	shutdown = !sn->rpcb_users;  	spin_unlock(&sn->rpcb_clnt_lock);  	if (shutdown) { @@ -394,6 +396,7 @@ static int rpcb_register_call(struct rpc_clnt *clnt, struct rpc_message *msg)  /**   * rpcb_register - set or unset a port registration with the local rpcbind svc + * @net: target network namespace   * @prog: RPC program number to bind   * @vers: RPC version number to bind   * @prot: transport protocol to register @@ -521,6 +524,7 @@ static int rpcb_unregister_all_protofamilies(struct sunrpc_net *sn,  /**   * rpcb_v4_register - set or unset a port registration with the local rpcbind + * @net: target network namespace   * @program: RPC program number of service to (un)register   * @version: RPC version number of service to (un)register   * @address: address family, IP address, and port to (un)register  | 
