2017-11-08 14:51 GMT+08:00 David Miller <da...@davemloft.net>: > From: Yafang Shao <laoar.s...@gmail.com> > Date: Tue, 7 Nov 2017 18:36:28 +0800 > >> When I hooked the function tcp_set_state with kprobe to track the ipv4/tcp >> state transistion, I found state transition from TCP_LISTEN to TCP_SYN_RECV >> is missed. >> >> I think it is better to use the helper to do state transition instead of >> assigning the state to sk_state directly. >> Then we can monitor the whole tcp lifespans with kprobe or ftrace easily. >> >> Signed-off-by: Yafang Shao <laoar.s...@gmail.com> > > This is really heavy handed and excessive for these cases. > > They don't have to handle any of the issues dealt with in > tcp_set_state(). > > I would prefer if you made a special helper to net/tcp.h which did: > > static inline void __tcp_set_state(struct sock *sk, int state) > { > trace_tcp_set_state(sk, sk->sk_state, state); > sk->sk_state = state; > }
Good idea! I will try to implement it. Thanks Yafang