From 2198b5347fa01fb24a991d93d940d21e4cc37105 Mon Sep 17 00:00:00 2001 From: Avinash Repaka Date: Thu, 31 Aug 2017 14:37:42 -0700 Subject: [PATCH] RDS: IB: Destroy aux_wq if rds_ib_init() fails MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This patch destroys rds_aux_wq in rds_ib_init() error path to avoid memory leak. Since destroy_workqueue() waits on pending work to be done, we can remove flush_workqueue() prior to destroying. Orabug: 26732887 Signed-off-by: Avinash Repaka Reviewed-by: Gerd Rausch Reviewed-by: HÃ¥kon Bugge --- net/rds/ib.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/rds/ib.c b/net/rds/ib.c index 35dac3bfee74..e84143bbf62d 100644 --- a/net/rds/ib.c +++ b/net/rds/ib.c @@ -2707,14 +2707,14 @@ int rds_ib_init(void) ret = rds_trans_register(&rds_ib_transport); if (ret) - goto out_ibreg; + goto out_aux_wq; rds_info_register_func(RDS_INFO_IB_CONNECTIONS, rds_ib_ic_info); ret = rds_ip_threads_init(); if (ret) { printk(KERN_ERR "RDS: failed to create IP thread\n"); - goto out_ibreg; + goto out_aux_wq; } rds_ib_ip_excl_ips_init(); @@ -2733,6 +2733,8 @@ int rds_ib_init(void) out_ip_thread: rds_ip_thread_exit(); +out_aux_wq: + destroy_workqueue(rds_aux_wq); out_ibreg: rds_ib_unregister_client(); out_recv: @@ -2754,7 +2756,6 @@ void rds_ib_exit(void) rds_ib_destroy_nodev_conns(); rds_ib_sysctl_exit(); rds_ib_recv_exit(); - flush_workqueue(rds_aux_wq); destroy_workqueue(rds_aux_wq); rds_trans_unregister(&rds_ib_transport); rds_ib_fmr_exit(); -- 2.50.1