From df1f40d88ac21d14daf990a505983bed23defee8 Mon Sep 17 00:00:00 2001 From: "J. Bruce Fields" Date: Mon, 25 Oct 2010 20:24:48 -0400 Subject: [PATCH] --- yaml --- r: 231128 b: refs/heads/master c: b176331627fccc726d28f4fc4a357d1f3c19dbf0 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/sunrpc/svc_xprt.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 9b2d04e8d1fe..f693115ca194 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f8c0d226fef05226ff1a85055c8ed663022f40c1 +refs/heads/master: b176331627fccc726d28f4fc4a357d1f3c19dbf0 diff --git a/trunk/net/sunrpc/svc_xprt.c b/trunk/net/sunrpc/svc_xprt.c index 8c018df80692..bfbda676574a 100644 --- a/trunk/net/sunrpc/svc_xprt.c +++ b/trunk/net/sunrpc/svc_xprt.c @@ -931,7 +931,12 @@ void svc_close_xprt(struct svc_xprt *xprt) if (test_and_set_bit(XPT_BUSY, &xprt->xpt_flags)) /* someone else will have to effect the close */ return; - + /* + * We expect svc_close_xprt() to work even when no threads are + * running (e.g., while configuring the server before starting + * any threads), so if the transport isn't busy, we delete + * it ourself: + */ svc_delete_xprt(xprt); } EXPORT_SYMBOL_GPL(svc_close_xprt);