From acc7d0e0307963ce9e80e153e8f01a1ea3cc5c52 Mon Sep 17 00:00:00 2001 From: Eldad Zinger Date: Tue, 12 Oct 2010 16:06:37 +0200 Subject: [PATCH] sdp: when aborting SrcAvail, should check if it wasn't aborted already Check is relevant only after sleeping. Signed-off-by: Eldad Zinger --- drivers/infiniband/ulp/sdp/sdp_main.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index 43e18d769f6d..d0a48d73d1e7 100644 --- a/drivers/infiniband/ulp/sdp/sdp_main.c +++ b/drivers/infiniband/ulp/sdp/sdp_main.c @@ -2417,8 +2417,12 @@ sdp_mid_data: err = sdp_rdma_to_iovec(sk, msg->msg_iov, skb, &used, offset); if (unlikely(err)) { - sdp_abort_rx_srcavail(sk); - sdp_post_sendsm(sk); + /* ssk->rx_sa might had been freed when + * we slept. */ + if (ssk->rx_sa) { + sdp_abort_rx_srcavail(sk); + sdp_post_sendsm(sk); + } rx_sa = NULL; if (err == -EAGAIN || err == -ETIME) goto skb_cleanup; @@ -2486,7 +2490,10 @@ skb_cleanup: ntohl(h->mseq), ntohl(h->mseq_ack)); if (rx_sa) { - sdp_abort_rx_srcavail(sk); + /* ssk->rx_sa might had been freed when we slept. + */ + if (ssk->rx_sa) + sdp_abort_rx_srcavail(sk); rx_sa = NULL; } force_skb_cleanup: -- 2.50.1