Thanks, yes this is a bug. I found this bug exists from 3.17~ 4.13. The commit is d94e0417
One question: should I send a patch for each kernel version because code conflicts ? a patch for v4.12 a patch for v4.11 a patch for v4.10~v4.7 a patch for v4.6~v3.17 and a patch for net-next, because tcp_tw_recycle has been removed. Thanks very much. On Sun, Aug 20, 2017 at 12:25 PM, David Miller <da...@davemloft.net> wrote: > From: Tonghao Zhang <xiangxia.m....@gmail.com> > Date: Wed, 16 Aug 2017 20:02:45 -0700 > >> Because we remove the tcp_tw_recycle support in the commit >> 4396e46187c ('tcp: remove tcp_tw_recycle') and also delete >> the code 'af_ops->route_req' for sysctl_tw_recycle in tcp_conn_request. >> Now when we call the 'af_ops->route_req', the dist always is >> NULL, and we remove the unnecessay check. >> >> Signed-off-by: Tonghao Zhang <xiangxia.m....@gmail.com> > > This is a bug actually, rather than something to paper over > by removing the check. > > Code earlier in this function needs a proper 'dst' in order to operate > properly. > > There is a call to tcp_peer_is_proven() which must have a proper route > to make the determination yet it will always be NULL. > > Please investigate what the code is doing and how a test became > "unnecessary" over time before blindly removing it, thank you.