From 55a3c00d161e8751acdb0e59dc5113efc7a25705 Mon Sep 17 00:00:00 2001 From: Amir Vadai Date: Wed, 23 Jun 2010 13:43:55 +0300 Subject: [PATCH] sdp: cleanup ssk->rx_sa when aborting incoming SrcAvail Signed-off-by: Amir Vadai --- drivers/infiniband/ulp/sdp/sdp_main.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index 3a0f9def37a8..65b57125637f 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; } -- 2.50.1