diff mbox series

[v3,net-next,2/2] net: sock: undefine SOCK_DEBUGGING

Message ID 1550413592-7877-3-git-send-email-laoar.shao@gmail.com
State Changes Requested
Delegated to: David Miller
Headers show
Series clean up SOCK_DEBUG() | expand

Commit Message

Yafang Shao Feb. 17, 2019, 2:26 p.m. UTC
SOCK_DEBUG() is a old facility for debugging.
If the user want to use it for debugging, the user must modify the
application first, that doesn't seem like a good way.
Now we have more powerful facilities, i.e. bpf or tracepoint, for this kind
of debugging purpose.
So we'd better disable it by default.
The reason why I don't remove it comepletely is that someone may still
would like to use it for debugging.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Suggested-by: Joe Perches <joe@perches.com>
---
 include/net/sock.h | 13 ++++++++-----
 net/core/sock.c    |  3 +++
 2 files changed, 11 insertions(+), 5 deletions(-)

Comments

David Miller Feb. 23, 2019, 9:21 p.m. UTC | #1
From: Yafang Shao <laoar.shao@gmail.com>
Date: Sun, 17 Feb 2019 22:26:32 +0800

> SOCK_DEBUG() is a old facility for debugging.
> If the user want to use it for debugging, the user must modify the
> application first, that doesn't seem like a good way.
> Now we have more powerful facilities, i.e. bpf or tracepoint, for this kind
> of debugging purpose.
> So we'd better disable it by default.
> The reason why I don't remove it comepletely is that someone may still
> would like to use it for debugging.
> 
> Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> Suggested-by: Joe Perches <joe@perches.com>

Sorry, I'm not applying this.

You are forcing everyone who wants to use this to add a curstom local
source code change into their build.

I'm OK with patch #1, and Eric suggested it, so if you want to submit
that separately that's fine.
Joe Perches Feb. 23, 2019, 10:13 p.m. UTC | #2
On Sat, 2019-02-23 at 13:21 -0800, David Miller wrote:
> From: Yafang Shao <laoar.shao@gmail.com>
> Date: Sun, 17 Feb 2019 22:26:32 +0800
> 
> > SOCK_DEBUG() is a old facility for debugging.
> > If the user want to use it for debugging, the user must modify the
> > application first, that doesn't seem like a good way.
> > Now we have more powerful facilities, i.e. bpf or tracepoint, for this kind
> > of debugging purpose.
> > So we'd better disable it by default.
> > The reason why I don't remove it comepletely is that someone may still
> > would like to use it for debugging.
> > 
> > Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> > Suggested-by: Joe Perches <joe@perches.com>
> 
> Sorry, I'm not applying this.
> 
> You are forcing everyone who wants to use this to add a curstom local
> source code change into their build.

That may not actually be a bad thing.
It could become a CONFIG bit too.

I'm not sure how often it's actually used.

Outside of the likely to be removed tcp uses, it's
currently used only in appletalk/ddp, x25, and the 1 use
in dccp.

All of the existing uses could likely be removed without
much notice by anyone.
Cong Wang Feb. 24, 2019, 1:11 a.m. UTC | #3
On Sat, Feb 23, 2019 at 1:21 PM David Miller <davem@davemloft.net> wrote:
>
> You are forcing everyone who wants to use this to add a curstom local
> source code change into their build.

What's wrong with this? People carry custom changes in anyway,
do we really need to care about all the downstream changes?

If yes, can I just add some debugging prink's that no one is going
to use except me? My argument would be you can't force me
to add a custom local source code change.

Can we just play this fairly instead of just for any special people?

Thanks!
Cong Wang Feb. 24, 2019, 1:26 a.m. UTC | #4
On Sat, Feb 23, 2019 at 1:21 PM David Miller <davem@davemloft.net> wrote:
>
> From: Yafang Shao <laoar.shao@gmail.com>
> Date: Sun, 17 Feb 2019 22:26:32 +0800
> > The reason why I don't remove it comepletely is that someone may still
> > would like to use it for debugging.

Please remove it completely.

The rule here is we upstream only care about in-tree users, any out-of-tree
user is beyond what we care. They either need to push their code that uses
this to upstream, or have to carry a revert downstream.

People carry downstream changes all the time, this one isn't an exception.

Let's respect rules.

Thanks.
David Miller Feb. 24, 2019, 2:30 a.m. UTC | #5
From: Cong Wang <xiyou.wangcong@gmail.com>
Date: Sat, 23 Feb 2019 17:11:08 -0800

> On Sat, Feb 23, 2019 at 1:21 PM David Miller <davem@davemloft.net> wrote:
>>
>> You are forcing everyone who wants to use this to add a curstom local
>> source code change into their build.
> 
> What's wrong with this? People carry custom changes in anyway,
> do we really need to care about all the downstream changes?

No way am I allowing this, sorry.

Either it's something in the tree that people can use or it's
a crap hack.

When we see stuff like this in a driver we ask the driver author to
remove it.
Cong Wang Feb. 25, 2019, 10 p.m. UTC | #6
On Sat, Feb 23, 2019 at 6:31 PM David Miller <davem@davemloft.net> wrote:
>
> From: Cong Wang <xiyou.wangcong@gmail.com>
> Date: Sat, 23 Feb 2019 17:11:08 -0800
>
> > On Sat, Feb 23, 2019 at 1:21 PM David Miller <davem@davemloft.net> wrote:
> >>
> >> You are forcing everyone who wants to use this to add a curstom local
> >> source code change into their build.
> >
> > What's wrong with this? People carry custom changes in anyway,
> > do we really need to care about all the downstream changes?
>
> No way am I allowing this, sorry.
>
> Either it's something in the tree that people can use or it's
> a crap hack.
>
> When we see stuff like this in a driver we ask the driver author to
> remove it.

Just to clarify, I have been suggesting to completely remove
this unused macro, never suggest to just undefine it in-tree.

There is no reason to keep it in-tree, whether defined or undefined,
just for downstream users.

Thanks.
David Miller Feb. 25, 2019, 10:29 p.m. UTC | #7
From: Cong Wang <xiyou.wangcong@gmail.com>
Date: Mon, 25 Feb 2019 14:00:09 -0800

> Just to clarify, I have been suggesting to completely remove
> this unused macro, never suggest to just undefine it in-tree.
> 
> There is no reason to keep it in-tree, whether defined or undefined,
> just for downstream users.

And this is where you and I fundamentally disagree.
Cong Wang Feb. 25, 2019, 10:58 p.m. UTC | #8
On Mon, Feb 25, 2019 at 2:29 PM David Miller <davem@davemloft.net> wrote:
>
> From: Cong Wang <xiyou.wangcong@gmail.com>
> Date: Mon, 25 Feb 2019 14:00:09 -0800
>
> > Just to clarify, I have been suggesting to completely remove
> > this unused macro, never suggest to just undefine it in-tree.
> >
> > There is no reason to keep it in-tree, whether defined or undefined,
> > just for downstream users.
>
> And this is where you and I fundamentally disagree.

So you agree that I can add debugging printk's only for my own use?
I can claim that I only use them downstream and you can't force me
to carry local changes?

If not, what is your criteria for accepting debugging printk's? Whose
can be accepted and whose can't?

Please be specific, and ideally make it a formal doc in netdev-FAQ.txt.

Thanks!
David Miller Feb. 25, 2019, 11:11 p.m. UTC | #9
From: Cong Wang <xiyou.wangcong@gmail.com>
Date: Mon, 25 Feb 2019 14:58:36 -0800

> So you agree that I can add debugging printk's only for my own use?

Let's put it this way.

If I ignore the fact that some of the data centers with the furtest
reach on the entire planet use something that is in the tree already,
then I am being unreasonable and insensitive.

This means no adding, but keeping things we already have.

Don't try to weasel word what I'm trying to say here Cong.

Have a nice day.
David Miller Feb. 25, 2019, 11:11 p.m. UTC | #10
From: Cong Wang <xiyou.wangcong@gmail.com>
Date: Mon, 25 Feb 2019 14:58:36 -0800

> Please be specific, and ideally make it a formal doc in netdev-FAQ.txt.

And this isn't happening either Cong, I reserve the right to apply my
judgment as networking maintainer on a case by case basis as I so see
fit.
Cong Wang Feb. 25, 2019, 11:18 p.m. UTC | #11
(Cc'ing LKML)

On Mon, Feb 25, 2019 at 3:11 PM David Miller <davem@davemloft.net> wrote:
>
> From: Cong Wang <xiyou.wangcong@gmail.com>
> Date: Mon, 25 Feb 2019 14:58:36 -0800
>
> > Please be specific, and ideally make it a formal doc in netdev-FAQ.txt.
>
> And this isn't happening either Cong, I reserve the right to apply my
> judgment as networking maintainer on a case by case basis as I so see
> fit.

Thanks for rephrasing non-transparency in such a wonderful way.
Yafang Shao Feb. 25, 2019, 11:54 p.m. UTC | #12
On Tue, Feb 26, 2019 at 6:58 AM Cong Wang <xiyou.wangcong@gmail.com> wrote:
>
> On Mon, Feb 25, 2019 at 2:29 PM David Miller <davem@davemloft.net> wrote:
> >
> > From: Cong Wang <xiyou.wangcong@gmail.com>
> > Date: Mon, 25 Feb 2019 14:00:09 -0800
> >
> > > Just to clarify, I have been suggesting to completely remove
> > > this unused macro, never suggest to just undefine it in-tree.
> > >
> > > There is no reason to keep it in-tree, whether defined or undefined,
> > > just for downstream users.
> >
> > And this is where you and I fundamentally disagree.
>
> So you agree that I can add debugging printk's only for my own use?
> I can claim that I only use them downstream and you can't force me
> to carry local changes?
>
> If not, what is your criteria for accepting debugging printk's? Whose
> can be accepted and whose can't?
>
> Please be specific, and ideally make it a formal doc in netdev-FAQ.txt.
>

Per my personal view, I agree with you that we should remove it completely.

Clean up such kind of legacy code can make the kernel more clean.

Thanks
Yafang
diff mbox series

Patch

diff --git a/include/net/sock.h b/include/net/sock.h
index 6679f3c..444e92f 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -81,14 +81,17 @@ 
  */
 
 /* Define this to get the SOCK_DBG debugging facility. */
-#define SOCK_DEBUGGING
+/* #define SOCK_DEBUGGING */
 #ifdef SOCK_DEBUGGING
-#define SOCK_DEBUG(sk, msg...) do { if ((sk) && sock_flag((sk), SOCK_DBG)) \
-					printk(KERN_DEBUG msg); } while (0)
+#define SOCK_DEBUG(sk, fmt, ...)			\
+do {							\
+	if ((sk) && sock_flag((sk), SOCK_DBG))		\
+		printk(KERN_DEBUG fmt, ##__VA_ARGS__);	\
+} while (0)
 #else
 /* Validate arguments and do nothing */
-static inline __printf(2, 3)
-void SOCK_DEBUG(const struct sock *sk, const char *msg, ...)
+__printf(2, 3)
+static inline void SOCK_DEBUG(const struct sock *sk, const char *fmt, ...)
 {
 }
 #endif
diff --git a/net/core/sock.c b/net/core/sock.c
index 71ded4d..7c15835 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -753,6 +753,9 @@  int sock_setsockopt(struct socket *sock, int level, int optname,
 
 	switch (optname) {
 	case SO_DEBUG:
+		/* This option takes effect only when SOCK_DEBUGGING
+		 * is defined.
+		 */
 		if (val && !capable(CAP_NET_ADMIN))
 			ret = -EACCES;
 		else