diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index a74a1289113e0b4847dd207a0dc7308593b147f9..2b8789cf8db1dcbd27fe5668db5a74ed8210c444 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -1101,8 +1101,7 @@ tcp_state_change(struct sock *sk)
 	case TCP_SYN_RECV:
 		break;
 	default:
-		if (xprt_test_and_clear_connected(xprt))
-			rpc_wake_up_status(&xprt->pending, -ENOTCONN);
+		xprt_disconnect(xprt);
 		break;
 	}
  out: