[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20120821.144327.1729675246155381935.davem@davemloft.net>
Date: Tue, 21 Aug 2012 14:43:27 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: eric.dumazet@...il.com
Cc: fengguang.wu@...el.com, netdev@...r.kernel.org
Subject: Re: [PATCH] tcp: fix possible socket refcount problem
From: Eric Dumazet <eric.dumazet@...il.com>
Date: Mon, 20 Aug 2012 12:22:46 +0200
> From: Eric Dumazet <edumazet@...gle.com>
>
> Commit 6f458dfb40 (tcp: improve latencies of timer triggered events)
> added bug leading to following trace :
...
> The bug comes from the fact that timer set in sk_reset_timer() can run
> before we actually do the sock_hold(). socket refcount reaches zero and
> we free the socket too soon.
>
> timer handler is not allowed to reduce socket refcnt if socket is owned
> by the user, or we need to change sk_reset_timer() implementation.
>
> We should take a reference on the socket in case TCP_DELACK_TIMER_DEFERRED
> or TCP_DELACK_TIMER_DEFERRED bit are set in tsq_flags
>
> Also fix a typo in tcp_delack_timer(), where TCP_WRITE_TIMER_DEFERRED
> was used instead of TCP_DELACK_TIMER_DEFERRED.
>
> For consistency, use same socket refcount change for TCP_MTU_REDUCED_DEFERRED,
> even if not fired from a timer.
>
> Reported-by: Fengguang Wu <fengguang.wu@...el.com>
> Tested-by: Fengguang Wu <fengguang.wu@...el.com>
> Signed-off-by: Eric Dumazet <edumazet@...gle.com>
Applied, thanks Eric.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists