]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sdp: when aborting SrcAvail, should check if it wasn't aborted already
authorEldad Zinger <eldadz@mellanox.co.il>
Tue, 12 Oct 2010 14:06:37 +0000 (16:06 +0200)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:05:27 +0000 (05:05 -0700)
Check is relevant only after sleeping.

Signed-off-by: Eldad Zinger <eldadz@mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp_main.c

index 43e18d769f6df22645a30e47f1e2cb2f44174473..d0a48d73d1e7d3f2e7de1be513ffcac936f60c67 100644 (file)
@@ -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: