Make certain all transports pending free are flushed from the wq
before unloading the module.
Signed-off-by: Tom Tucker <[email protected]>
---
Thanks to Andrew for pointing this out.
net/sunrpc/xprtrdma/svc_rdma.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/net/sunrpc/xprtrdma/svc_rdma.c b/net/sunrpc/xprtrdma/svc_rdma.c
index 88c0ca2..b370e5c 100644
--- a/net/sunrpc/xprtrdma/svc_rdma.c
+++ b/net/sunrpc/xprtrdma/svc_rdma.c
@@ -236,6 +236,7 @@ static ctl_table svcrdma_root_table[] = {
void svc_rdma_cleanup(void)
{
dprintk("SVCRDMA Module Removed, deregister RPC RDMA transport\n");
+ flush_scheduled_work();
if (svcrdma_table_header) {
unregister_sysctl_table(svcrdma_table_header);
svcrdma_table_header = NULL;
On Fri, May 23, 2008 at 10:31:25AM -0500, Tom Tucker wrote:
>
> Make certain all transports pending free are flushed from the wq
> before unloading the module.
OK, makes sense.
--b.
>
> Signed-off-by: Tom Tucker <[email protected]>
> ---
>
> Thanks to Andrew for pointing this out.
>
> net/sunrpc/xprtrdma/svc_rdma.c | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/net/sunrpc/xprtrdma/svc_rdma.c b/net/sunrpc/xprtrdma/svc_rdma.c
> index 88c0ca2..b370e5c 100644
> --- a/net/sunrpc/xprtrdma/svc_rdma.c
> +++ b/net/sunrpc/xprtrdma/svc_rdma.c
> @@ -236,6 +236,7 @@ static ctl_table svcrdma_root_table[] = {
> void svc_rdma_cleanup(void)
> {
> dprintk("SVCRDMA Module Removed, deregister RPC RDMA transport\n");
> + flush_scheduled_work();
> if (svcrdma_table_header) {
> unregister_sysctl_table(svcrdma_table_header);
> svcrdma_table_header = NULL;
>