aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/rds/ib.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/net/rds/ib.c b/net/rds/ib.c
index b21e24fd060c..fc14f637d645 100644
--- a/net/rds/ib.c
+++ b/net/rds/ib.c
@@ -336,11 +336,18 @@ static int rds_ib_laddr_check(__be32 addr)
336 return ret; 336 return ret;
337} 337}
338 338
339static void rds_ib_unregister_client(void)
340{
341 ib_unregister_client(&rds_ib_client);
342 /* wait for rds_ib_dev_free() to complete */
343 flush_workqueue(rds_wq);
344}
345
339void rds_ib_exit(void) 346void rds_ib_exit(void)
340{ 347{
341 rds_info_deregister_func(RDS_INFO_IB_CONNECTIONS, rds_ib_ic_info); 348 rds_info_deregister_func(RDS_INFO_IB_CONNECTIONS, rds_ib_ic_info);
342 rds_ib_destroy_nodev_conns(); 349 rds_ib_destroy_nodev_conns();
343 ib_unregister_client(&rds_ib_client); 350 rds_ib_unregister_client();
344 rds_ib_sysctl_exit(); 351 rds_ib_sysctl_exit();
345 rds_ib_recv_exit(); 352 rds_ib_recv_exit();
346 rds_trans_unregister(&rds_ib_transport); 353 rds_trans_unregister(&rds_ib_transport);
@@ -404,7 +411,7 @@ out_recv:
404out_sysctl: 411out_sysctl:
405 rds_ib_sysctl_exit(); 412 rds_ib_sysctl_exit();
406out_ibreg: 413out_ibreg:
407 ib_unregister_client(&rds_ib_client); 414 rds_ib_unregister_client();
408out: 415out:
409 return ret; 416 return ret;
410} 417}