From 5495fc23eb432999e4c213a606fe4104243a2fed Mon Sep 17 00:00:00 2001 From: Eldad Zinger Date: Sun, 6 Jun 2010 13:48:32 +0300 Subject: [PATCH] sdp: fix for a bug of lost refcnt in TCP_TIME_WAIT state. OFED addons break semantics of cancel_delayed_work_sync(), like in SLES 10. Signed-off-by: Eldad Zinger --- drivers/infiniband/ulp/sdp/sdp_main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/ulp/sdp/sdp_main.c b/drivers/infiniband/ulp/sdp/sdp_main.c index e46f1391afb8..f8a154b82529 100644 --- a/drivers/infiniband/ulp/sdp/sdp_main.c +++ b/drivers/infiniband/ulp/sdp/sdp_main.c @@ -614,7 +614,11 @@ static int sdp_cancel_cma_timewait_timeout(struct sdp_sock *ssk) return 1; ssk->cma_timewait_timeout = 0; - return cancel_delayed_work_sync(&ssk->cma_timewait_work); + return cancel_delayed_work(&ssk->cma_timewait_work); + /* No need to use the sync'ed function because the socket's refcnt is + * pre-taken and multiple invocations of sock_put() are self sync'ed + * (atomic operation). + */ } static inline void sdp_start_cma_timewait_timeout(struct sdp_sock *ssk, int timeo) -- 2.50.1