Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752077AbdLEUMG (ORCPT ); Tue, 5 Dec 2017 15:12:06 -0500 Received: from shards.monkeyblade.net ([184.105.139.130]:39832 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751942AbdLEUMB (ORCPT ); Tue, 5 Dec 2017 15:12:01 -0500 Date: Tue, 05 Dec 2017 15:11:59 -0500 (EST) Message-Id: <20171205.151159.1781485937410298333.davem@davemloft.net> To: laoar.shao@gmail.com Cc: songliubraving@fb.com, marcelo.leitner@gmail.com, kuznet@ms2.inr.ac.ru, yoshfuji@linux-ipv6.org, rostedt@goodmis.org, bgregg@netflix.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 net-next] net/tcp: trace all TCP/IP state transition with tcp_set_state tracepoint From: David Miller In-Reply-To: <1512483162-5557-1-git-send-email-laoar.shao@gmail.com> References: <1512483162-5557-1-git-send-email-laoar.shao@gmail.com> X-Mailer: Mew version 6.7 on Emacs 24.5 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.5.12 (shards.monkeyblade.net [149.20.54.216]); Tue, 05 Dec 2017 12:12:01 -0800 (PST) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1244 Lines: 39 From: Yafang Shao Date: Tue, 5 Dec 2017 14:12:42 +0000 > } > > +/* For tcp_set_state tracepoint */ > +void sk_state_store(struct sock *sk, int newstate); > + > void sock_enable_timestamp(struct sock *sk, int flag); > int sock_get_timestamp(struct sock *, struct timeval __user *); > int sock_get_timestampns(struct sock *, struct timespec __user *); ... > --- a/net/ipv4/tcp.c > +++ b/net/ipv4/tcp.c > @@ -2036,6 +2036,18 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblock, > } > EXPORT_SYMBOL(tcp_recvmsg); > > +void sk_state_store(struct sock *sk, int newstate) > +{ > + trace_tcp_set_state(sk, sk->sk_state, newstate); > + __sk_state_store(sk, newstate); > +} > + Please do not define a sock generic function in the TCP protocol code. If it belongs in TCP and is only used by TCP, give is a tcp specific name prefix rather than a generic sk_ one. This is even more ugly because I see that inet_connection_sock.c and inet_hashtables.c uses this thing too. Which means that DCCP sockets will trigger this tracepoint. inet_connection_sock.c and inet_hashtables.c are not guaranteed to operate on only TCP sockets, and you must make amends to handle that properly. Thanks.