]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sdp: cleanup ssk->rx_sa when aborting incoming SrcAvail
authorAmir Vadai <amirv@mellanox.co.il>
Wed, 23 Jun 2010 10:43:55 +0000 (13:43 +0300)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:05:07 +0000 (05:05 -0700)
Signed-off-by: Amir Vadai <amirv@mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp_main.c

index 3a0f9def37a8dce56f0ae3b9580ec8a2d8fb7005..65b57125637f0ceeee028b307f12f097922b183d 100644 (file)
@@ -2119,13 +2119,23 @@ fin:
 static inline int sdp_abort_rx_srcavail(struct sock *sk, struct sk_buff *skb)
 {
        struct sdp_bsdh *h = (struct sdp_bsdh *)skb_transport_header(skb);
+       struct sdp_sock *ssk = sdp_sk(sk);
 
        sdp_dbg_data(sk, "SrcAvail aborted\n");
 
        h->mid = SDP_MID_DATA;
+
+       spin_lock_irq(&ssk->rx_ring.lock);
+
+       if (ssk->rx_sa == RX_SRCAVAIL_STATE(skb))
+               ssk->rx_sa = NULL;
+
        kfree(RX_SRCAVAIL_STATE(skb));
        RX_SRCAVAIL_STATE(skb) = NULL;
 
+       spin_unlock_irq(&ssk->rx_ring.lock);
+
+
        return 0;
 }