diff options
Diffstat (limited to 'net/sunrpc/rpc_pipe.c')
| -rw-r--r-- | net/sunrpc/rpc_pipe.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 3128a1503d8..fd10981ea79 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c @@ -1152,14 +1152,19 @@ static void rpc_kill_sb(struct super_block *sb)  	struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);  	mutex_lock(&sn->pipefs_sb_lock); +	if (sn->pipefs_sb != sb) { +		mutex_unlock(&sn->pipefs_sb_lock); +		goto out; +	}  	sn->pipefs_sb = NULL;  	mutex_unlock(&sn->pipefs_sb_lock); -	put_net(net);  	dprintk("RPC:       sending pipefs UMOUNT notification for net %p%s\n",  		net, NET_NAME(net));  	blocking_notifier_call_chain(&rpc_pipefs_notifier_list,  					   RPC_PIPEFS_UMOUNT,  					   sb); +	put_net(net); +out:  	kill_litter_super(sb);  }  |