From: Amir Vadai Date: Wed, 23 Jun 2010 10:43:55 +0000 (+0300) Subject: sdp: cleanup ssk->rx_sa when aborting incoming SrcAvail X-Git-Tag: v4.1.12-92~264^2~5^2~155 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=55a3c00d161e8751acdb0e59dc5113efc7a25705;p=users%2Fjedix%2Flinux-maple.git sdp: cleanup ssk->rx_sa when aborting incoming SrcAvail Signed-off-by: Amir Vadai --- diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index 3a0f9def37a8d..65b57125637f0 100644 --- a/drivers/infiniband/ulp/sdp/sdp_main.c +++ b/drivers/infiniband/ulp/sdp/sdp_main.c @@ -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; }