diff options
Diffstat (limited to 'net/sunrpc/rpcb_clnt.c')
| -rw-r--r-- | net/sunrpc/rpcb_clnt.c | 12 | 
1 files changed, 7 insertions, 5 deletions
diff --git a/net/sunrpc/rpcb_clnt.c b/net/sunrpc/rpcb_clnt.c index 3c0653439f3..92509ffe15f 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) {  |