From 6070121c591db84d06fd99a7f2f348a551c87014 Mon Sep 17 00:00:00 2001 From: Eldad Zinger Date: Wed, 7 Jul 2010 16:03:11 +0300 Subject: [PATCH] sdp: rx completions workqueue should be flushed after qp destruction and before the socket is freed. Signed-off-by: Eldad Zinger --- drivers/infiniband/ulp/sdp/sdp_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index 42b0509acc98..f1d148aff533 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); -- 2.50.1