All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joe Perches <joe@perches.com>
To: Julia Lawall <julia.lawall@lip6.fr>
Cc: Logan Gunthorpe <logang@deltatee.com>,
	linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org,
	Andy Whitcroft <apw@canonical.com>
Subject: Re: [PATCH v2] checkpatch: Add a warning for log messages that don't end in a new line
Date: Mon, 27 Nov 2017 09:25:37 +0000	[thread overview]
Message-ID: <1511774737.32426.29.camel@perches.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1711270704420.2369@hadrien>

On Mon, 2017-11-27 at 07:08 +0100, Julia Lawall wrote:
> 
> On Sun, 26 Nov 2017, Joe Perches wrote:
> 
> > On Sun, 2017-11-26 at 23:44 +0100, Julia Lawall wrote:
> > > My semantic patch and results are below.  The semantic patch has some
> > > features that may or may not be desired:
> > > 
> > > 1.  It goes beyond printk, pr_xxx, dev_xxx, and netdev_xxx, by finding
> > > functions that are sometimes used with a format string ending with a
> > > newline.  To reduce false positives, such a function is ignored if it is
> > > sometimes used with a string that ends in a space.  This could lead to
> > > false positives where actually one of the calls has a \n that it should
> > > not have.
> > > 
> > > 2.  Coccinelle puts multipart strings on a single line.  So the rule goes
> > > a little further and eliminates the multipartness.  Basically "xxx " "yyy"
> > > becomes "xxx yyy" regardless of the length of the result.
> > 
> > What about the semi-common string concatenation "foo" #var "bar" ?
> 
> I don't think this is an issue.  There is no " " pattern in this.  It's
> true that if the pieces were on separate lines, Coccinelle will now put
> them on a single line.  I'm not sure I want to bother with this.
> 
> > > 3.  Some prints appear not to end with a newline because they end with \n.
> > > where .\n was likely intended.  Instead of creating \n.\n, the semantic
> > > patch just moves the .to the left of the . And if there was .\n. it just
> > > drops the final period.
> > 
> > That may be a problem if the sentence is "something...\n"
> 
> I think I was not clear.  The sentence ends in ".\n.".
> 
> > There seem to be many false positives in here too.
> 
> Could you point to something specifically?  I saw a lot of cases with
> prints followed by returns and gotos.  I guess those are not likely false
> positives.

random entries, as your original post is 2.6M (and didn't get to lkml)
and I only sampled it at a few places.

[]
diff -u -p a/lib/locking-selftest.c b/lib/locking-selftest.c
--- a/lib/locking-selftest.c
+++ b/lib/locking-selftest.c
@@ -1186,7 +1186,7 @@ static void dotest(void (*testcase_fn)(v

 static inline void print_testname(const char *testname)
 {
-	printk("%33s:", testname);
+	printk("%33s:\n", testname);
 }

[]

diff -u -p a/lib/dynamic_debug.c b/lib/dynamic_debug.c
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -562,7 +562,8 @@ void __dynamic_pr_debug(struct _ddebug *
 	vaf.fmt = fmt;
 	vaf.va = &args;

-	printk(KERN_DEBUG "%s%pV", dynamic_emit_prefix(descriptor, buf), &vaf);
+	printk(KERN_DEBUG "%s%pV\n", dynamic_emit_prefix(descriptor, buf),
+	       &vaf);

 	va_end(args);
 }

[]

diff -u -p a/drivers/tty/serial/ioc4_serial.c b/drivers/tty/serial/ioc4_serial.c
--- a/drivers/tty/serial/ioc4_serial.c
+++ b/drivers/tty/serial/ioc4_serial.c
@@ -2858,8 +2858,7 @@ ioc4_serial_attach_one(struct ioc4_drive
 				"sgi-ioc4serial", soft)) {
 		control->ic_irq = idd->idd_pdev->irq;
 	} else {
-		printk(KERN_WARNING
-		    "%s : request_irq fails for IRQ 0x%x\n ",
+		printk(KERN_WARNING "%s : request_irq fails for IRQ 0x%x\n \n",
 			__func__, idd->idd_pdev->irq);
 	}
 	ret = ioc4_attach_local(idd);

[]

below: the gig_dbg macro and _many_ other append a newline to a format

diff -u -p a/drivers/isdn/gigaset/ev-layer.c b/drivers/isdn/gigaset/ev-layer.c
--- a/drivers/isdn/gigaset/ev-layer.c
+++ b/drivers/isdn/gigaset/ev-layer.c
@@ -411,7 +411,7 @@ static void add_cid_event(struct cardsta
 	unsigned next, tail;
 	struct event_t *event;

-	gig_dbg(DEBUG_EVENT, "queueing event %d for cid %d", type, cid);
+	gig_dbg(DEBUG_EVENT, "queueing event %d for cid %d\n", type, cid);

 	spin_lock_irqsave(&cs->ev_lock, flags);

etc...


WARNING: multiple messages have this Message-ID (diff)
From: Joe Perches <joe@perches.com>
To: Julia Lawall <julia.lawall@lip6.fr>
Cc: Logan Gunthorpe <logang@deltatee.com>,
	linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org,
	Andy Whitcroft <apw@canonical.com>
Subject: Re: [PATCH v2] checkpatch: Add a warning for log messages that don't end in a new line
Date: Mon, 27 Nov 2017 01:25:37 -0800	[thread overview]
Message-ID: <1511774737.32426.29.camel@perches.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1711270704420.2369@hadrien>

On Mon, 2017-11-27 at 07:08 +0100, Julia Lawall wrote:
> 
> On Sun, 26 Nov 2017, Joe Perches wrote:
> 
> > On Sun, 2017-11-26 at 23:44 +0100, Julia Lawall wrote:
> > > My semantic patch and results are below.  The semantic patch has some
> > > features that may or may not be desired:
> > > 
> > > 1.  It goes beyond printk, pr_xxx, dev_xxx, and netdev_xxx, by finding
> > > functions that are sometimes used with a format string ending with a
> > > newline.  To reduce false positives, such a function is ignored if it is
> > > sometimes used with a string that ends in a space.  This could lead to
> > > false positives where actually one of the calls has a \n that it should
> > > not have.
> > > 
> > > 2.  Coccinelle puts multipart strings on a single line.  So the rule goes
> > > a little further and eliminates the multipartness.  Basically "xxx " "yyy"
> > > becomes "xxx yyy" regardless of the length of the result.
> > 
> > What about the semi-common string concatenation "foo" #var "bar" ?
> 
> I don't think this is an issue.  There is no " " pattern in this.  It's
> true that if the pieces were on separate lines, Coccinelle will now put
> them on a single line.  I'm not sure I want to bother with this.
> 
> > > 3.  Some prints appear not to end with a newline because they end with \n.
> > > where .\n was likely intended.  Instead of creating \n.\n, the semantic
> > > patch just moves the .to the left of the . And if there was .\n. it just
> > > drops the final period.
> > 
> > That may be a problem if the sentence is "something...\n"
> 
> I think I was not clear.  The sentence ends in ".\n.".
> 
> > There seem to be many false positives in here too.
> 
> Could you point to something specifically?  I saw a lot of cases with
> prints followed by returns and gotos.  I guess those are not likely false
> positives.

random entries, as your original post is 2.6M (and didn't get to lkml)
and I only sampled it at a few places.

[]
diff -u -p a/lib/locking-selftest.c b/lib/locking-selftest.c
--- a/lib/locking-selftest.c
+++ b/lib/locking-selftest.c
@@ -1186,7 +1186,7 @@ static void dotest(void (*testcase_fn)(v

 static inline void print_testname(const char *testname)
 {
-	printk("%33s:", testname);
+	printk("%33s:\n", testname);
 }

[]

diff -u -p a/lib/dynamic_debug.c b/lib/dynamic_debug.c
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -562,7 +562,8 @@ void __dynamic_pr_debug(struct _ddebug *
 	vaf.fmt = fmt;
 	vaf.va = &args;

-	printk(KERN_DEBUG "%s%pV", dynamic_emit_prefix(descriptor, buf), &vaf);
+	printk(KERN_DEBUG "%s%pV\n", dynamic_emit_prefix(descriptor, buf),
+	       &vaf);

 	va_end(args);
 }

[]

diff -u -p a/drivers/tty/serial/ioc4_serial.c b/drivers/tty/serial/ioc4_serial.c
--- a/drivers/tty/serial/ioc4_serial.c
+++ b/drivers/tty/serial/ioc4_serial.c
@@ -2858,8 +2858,7 @@ ioc4_serial_attach_one(struct ioc4_drive
 				"sgi-ioc4serial", soft)) {
 		control->ic_irq = idd->idd_pdev->irq;
 	} else {
-		printk(KERN_WARNING
-		    "%s : request_irq fails for IRQ 0x%x\n ",
+		printk(KERN_WARNING "%s : request_irq fails for IRQ 0x%x\n \n",
 			__func__, idd->idd_pdev->irq);
 	}
 	ret = ioc4_attach_local(idd);

[]

below: the gig_dbg macro and _many_ other append a newline to a format

diff -u -p a/drivers/isdn/gigaset/ev-layer.c b/drivers/isdn/gigaset/ev-layer.c
--- a/drivers/isdn/gigaset/ev-layer.c
+++ b/drivers/isdn/gigaset/ev-layer.c
@@ -411,7 +411,7 @@ static void add_cid_event(struct cardsta
 	unsigned next, tail;
 	struct event_t *event;

-	gig_dbg(DEBUG_EVENT, "queueing event %d for cid %d", type, cid);
+	gig_dbg(DEBUG_EVENT, "queueing event %d for cid %d\n", type, cid);

 	spin_lock_irqsave(&cs->ev_lock, flags);

etc...

  reply	other threads:[~2017-11-27  9:25 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-26  5:40 [PATCH v2] checkpatch: Add a warning for log messages that don't end in a new line Logan Gunthorpe
2017-11-26  5:40 ` Logan Gunthorpe
2017-11-26  5:51 ` Julia Lawall
2017-11-26  5:51   ` Julia Lawall
2017-11-26  6:01   ` Joe Perches
2017-11-26  6:01     ` Joe Perches
2017-11-26 17:38     ` Logan Gunthorpe
2017-11-26 17:38       ` Logan Gunthorpe
2017-11-26 22:29       ` Joe Perches
2017-11-26 22:29         ` Joe Perches
     [not found]         ` <alpine.DEB.2.20.1711262334370.2111@hadrien>
2017-11-27  1:12           ` Joe Perches
2017-11-27  1:12             ` Joe Perches
2017-11-27  6:08             ` Julia Lawall
2017-11-27  6:08               ` Julia Lawall
2017-11-27  9:25               ` Joe Perches [this message]
2017-11-27  9:25                 ` Joe Perches
2017-11-27  9:32                 ` Julia Lawall
2017-11-27  9:32                   ` Julia Lawall
2017-11-27  9:42                   ` Joe Perches
2017-11-27  9:42                     ` Joe Perches
2017-11-27 17:07                 ` Logan Gunthorpe
2017-11-27 17:07                   ` Logan Gunthorpe
2017-11-27 17:26                   ` Joe Perches
2017-11-27 17:26                     ` Joe Perches
2017-11-27 17:33                     ` Logan Gunthorpe
2017-11-27 17:33                       ` Logan Gunthorpe
2017-11-27 17:41                       ` Joe Perches
2017-11-27 17:41                         ` Joe Perches
2017-11-27 17:42                         ` Logan Gunthorpe
2017-11-27 17:42                           ` Logan Gunthorpe
2017-11-27  4:00         ` Logan Gunthorpe
2017-11-27  4:00           ` Logan Gunthorpe
2017-11-27  6:11           ` Julia Lawall
2017-11-27  6:11             ` Julia Lawall
2017-11-27  6:27             ` Logan Gunthorpe
2017-11-27  6:27               ` Logan Gunthorpe
2017-11-27  6:34               ` Julia Lawall
2017-11-27  6:34                 ` Julia Lawall
2017-11-27  6:40                 ` Logan Gunthorpe
2017-11-27  6:40                   ` Logan Gunthorpe
2017-11-27  8:28                   ` Joe Perches
2017-11-27  8:28                     ` Joe Perches
2017-11-27  8:52                     ` Julia Lawall
2017-11-27  8:52                       ` Julia Lawall
2017-11-27  9:06                       ` Joe Perches
2017-11-27  9:06                         ` Joe Perches
2017-11-27 16:40                       ` Logan Gunthorpe
2017-11-27 16:40                         ` Logan Gunthorpe
2017-11-27 17:20                     ` Logan Gunthorpe
2017-11-27 17:20                       ` Logan Gunthorpe
2017-11-27 17:28                       ` Joe Perches
2017-11-27 17:28                         ` Joe Perches
2017-11-27 17:35                         ` Logan Gunthorpe
2017-11-27 17:35                           ` Logan Gunthorpe
2017-11-27 17:42                           ` Joe Perches
2017-11-27 17:42                             ` Joe Perches
2017-11-27 17:44                             ` Logan Gunthorpe
2017-11-27 17:44                               ` Logan Gunthorpe
2017-11-27 18:57                               ` Joe Perches
2017-11-27 18:57                                 ` Joe Perches
2017-11-27 19:58                                 ` Logan Gunthorpe
2017-11-27 19:58                                   ` Logan Gunthorpe
2017-11-27 20:49                                   ` Julia Lawall
2017-11-27 20:49                                     ` Julia Lawall
2017-11-27 22:56                                     ` Logan Gunthorpe
2017-11-27 22:56                                       ` Logan Gunthorpe
2017-11-28  0:15                                   ` Joe Perches
2017-11-28  0:15                                     ` Joe Perches
2017-11-26 16:55   ` Logan Gunthorpe
2017-11-26 16:55     ` Logan Gunthorpe
2017-11-26 17:09     ` Julia Lawall
2017-11-26 17:09       ` Julia Lawall
2017-11-26 17:47       ` Logan Gunthorpe
2017-11-26 17:47         ` Logan Gunthorpe
2017-11-26 18:17         ` Julia Lawall
2017-11-26 18:17           ` Julia Lawall
2017-11-26 18:33           ` Logan Gunthorpe
2017-11-26 18:33             ` Logan Gunthorpe
2017-11-27  1:35           ` Joe Perches
2017-11-27  1:35             ` Joe Perches
2017-11-27  6:40             ` Julia Lawall
2017-11-27  6:40               ` Julia Lawall
2017-11-27  6:42               ` Julia Lawall
2017-11-27  6:42                 ` Julia Lawall
2017-11-27  6:53                 ` Logan Gunthorpe
2017-11-27  6:53                   ` Logan Gunthorpe
2017-11-27  6:57                   ` Julia Lawall
2017-11-27  6:57                     ` Julia Lawall
2017-11-27  9:03                 ` Joe Perches
2017-11-27  9:03                   ` Joe Perches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1511774737.32426.29.camel@perches.com \
    --to=joe@perches.com \
    --cc=apw@canonical.com \
    --cc=julia.lawall@lip6.fr \
    --cc=kernel-janitors@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=logang@deltatee.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.