From 96f309272cd6c9b8218b9b38fc82168d38b3183c Mon Sep 17 00:00:00 2001 From: Eldad Zinger Date: Mon, 5 Jul 2010 14:46:04 +0300 Subject: [PATCH] sdp: rx/tx tasklets should be properly killed when destroying qp. Signed-off-by: Eldad Zinger --- drivers/infiniband/ulp/sdp/sdp_rx.c | 4 ++++ drivers/infiniband/ulp/sdp/sdp_tx.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/drivers/infiniband/ulp/sdp/sdp_rx.c b/drivers/infiniband/ulp/sdp/sdp_rx.c index f566522c24bc..9e0e9426b704 100644 --- a/drivers/infiniband/ulp/sdp/sdp_rx.c +++ b/drivers/infiniband/ulp/sdp/sdp_rx.c @@ -1001,5 +1001,9 @@ void sdp_rx_ring_destroy(struct sdp_sock *ssk) } } + tasklet_kill(&ssk->rx_ring.tasklet); + /* rx_cq is destroyed, so no more rx_irq, so no one will schedule this + * tasklet. */ + SDP_WARN_ON(ring_head(ssk->rx_ring) != ring_tail(ssk->rx_ring)); } diff --git a/drivers/infiniband/ulp/sdp/sdp_tx.c b/drivers/infiniband/ulp/sdp/sdp_tx.c index af93cacd4f36..e52f0382addb 100644 --- a/drivers/infiniband/ulp/sdp/sdp_tx.c +++ b/drivers/infiniband/ulp/sdp/sdp_tx.c @@ -535,5 +535,9 @@ void sdp_tx_ring_destroy(struct sdp_sock *ssk) } } + tasklet_kill(&ssk->tx_ring.tasklet); + /* tx_cq is destroyed, so no more tx_irq, so no one will schedule this + * tasklet. */ + SDP_WARN_ON(ring_head(ssk->tx_ring) != ring_tail(ssk->tx_ring)); } -- 2.51.0