From: Eldad Zinger Date: Wed, 7 Jul 2010 13:03:11 +0000 (+0300) Subject: sdp: rx completions workqueue should be flushed after qp destruction and before the... X-Git-Tag: v4.1.12-92~264^2~5^2~148 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=6070121c591db84d06fd99a7f2f348a551c87014;p=users%2Fjedix%2Flinux-maple.git sdp: rx completions workqueue should be flushed after qp destruction and before the socket is freed. Signed-off-by: Eldad Zinger --- diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index 42b0509acc989..f1d148aff5338 100644 --- a/drivers/infiniband/ulp/sdp/sdp_main.c +++ b/drivers/infiniband/ulp/sdp/sdp_main.c @@ -527,6 +527,8 @@ static void sdp_destruct(struct sock *sk) up_read(&device_removal_lock); flush_scheduled_work(); + flush_workqueue(rx_comp_wq); + /* Consider use cancel_work_sync(&ssk->rx_comp_work) */ if (ssk->parent) goto done; @@ -2849,6 +2851,7 @@ kill_socks: ssk->sdp_dev = NULL; release_sock(sk); + flush_workqueue(rx_comp_wq); schedule(); spin_lock_irq(&sock_list_lock);