From 66af1e558538137080615e7ad6d1f2f80862de01 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Tue, 6 Nov 2007 10:18:36 -0500 Subject: SUNRPC: Fix a race in xs_tcp_state_change() When scheduling the autoclose RPC call, we want to ensure that we don't race against the test_bit() call in xprt_clear_locked(). Signed-off-by: Trond Myklebust --- net/sunrpc/xprtsock.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'net/sunrpc/xprtsock.c') diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 6fa52f44de0..abb40c14073 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -1122,10 +1122,7 @@ static void xs_tcp_state_change(struct sock *sk) case TCP_SYN_RECV: break; case TCP_CLOSE_WAIT: - /* Try to schedule an autoclose RPC calls */ - set_bit(XPRT_CLOSE_WAIT, &xprt->state); - if (test_and_set_bit(XPRT_LOCKED, &xprt->state) == 0) - queue_work(rpciod_workqueue, &xprt->task_cleanup); + xprt_force_disconnect(xprt); default: xprt_disconnect(xprt); } -- cgit v1.2.3