From: J. Bruce Fields <bfields@redhat.com>
Date: Sat, 23 Oct 2010 15:16:10 +0000 (-0400)
Subject: svcrpc: assume svc_delete_xprt() called only once
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=ac9303eb74471bc2567960b47497a8bfbe1e5a03;p=linux.git

svcrpc: assume svc_delete_xprt() called only once

As long as DEAD exports are left BUSY, and svc_delete_xprt is called
only with BUSY held, then svc_delete_xprt() will never be called on an
xprt that is already DEAD.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
---

diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c
index 1b0673c6e9863..c65a472182901 100644
--- a/net/sunrpc/svc_xprt.c
+++ b/net/sunrpc/svc_xprt.c
@@ -903,7 +903,7 @@ void svc_delete_xprt(struct svc_xprt *xprt)
 
 	/* Only do this once */
 	if (test_and_set_bit(XPT_DEAD, &xprt->xpt_flags))
-		return;
+		BUG();
 
 	dprintk("svc: svc_delete_xprt(%p)\n", xprt);
 	xprt->xpt_ops->xpo_detach(xprt);