|
@@ -849,6 +849,14 @@ static void xs_tcp_close(struct rpc_xprt *xprt)
|
|
|
xs_tcp_shutdown(xprt);
|
|
|
}
|
|
|
|
|
|
+static void xs_local_destroy(struct rpc_xprt *xprt)
|
|
|
+{
|
|
|
+ xs_close(xprt);
|
|
|
+ xs_free_peer_addresses(xprt);
|
|
|
+ xprt_free(xprt);
|
|
|
+ module_put(THIS_MODULE);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* xs_destroy - prepare to shutdown a transport
|
|
|
* @xprt: doomed transport
|
|
@@ -862,10 +870,7 @@ static void xs_destroy(struct rpc_xprt *xprt)
|
|
|
|
|
|
cancel_delayed_work_sync(&transport->connect_worker);
|
|
|
|
|
|
- xs_close(xprt);
|
|
|
- xs_free_peer_addresses(xprt);
|
|
|
- xprt_free(xprt);
|
|
|
- module_put(THIS_MODULE);
|
|
|
+ xs_local_destroy(xprt);
|
|
|
}
|
|
|
|
|
|
static inline struct rpc_xprt *xprt_from_sock(struct sock *sk)
|
|
@@ -2482,7 +2487,7 @@ static struct rpc_xprt_ops xs_local_ops = {
|
|
|
.send_request = xs_local_send_request,
|
|
|
.set_retrans_timeout = xprt_set_retrans_timeout_def,
|
|
|
.close = xs_close,
|
|
|
- .destroy = xs_destroy,
|
|
|
+ .destroy = xs_local_destroy,
|
|
|
.print_stats = xs_local_print_stats,
|
|
|
};
|
|
|
|