From: Eldad Zinger Date: Tue, 12 Oct 2010 14:06:37 +0000 (+0200) Subject: sdp: when aborting SrcAvail, should check if it wasn't aborted already X-Git-Tag: v4.1.12-92~264^2~5^2~88 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=acc7d0e0307963ce9e80e153e8f01a1ea3cc5c52;p=users%2Fjedix%2Flinux-maple.git sdp: when aborting SrcAvail, should check if it wasn't aborted already Check is relevant only after sleeping. Signed-off-by: Eldad Zinger --- diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index 43e18d769f6df..d0a48d73d1e7d 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: