All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julia Lawall <julia.lawall@lip6.fr>
To: Joe Perches <joe@perches.com>
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 10:32:18 +0100 (CET)	[thread overview]
Message-ID: <alpine.DEB.2.20.1711271028510.3445@hadrien> (raw)
In-Reply-To: <1511774737.32426.29.camel@perches.com>



On Mon, 27 Nov 2017, Joe Perches wrote:

> 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);
>  }

Sure.

>
> []
>
> 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);
>  }

OK, one could look for va_end.

> []
>
> 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);

Like the \n. problem.

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

Still, it seems that the file must contain a bug elsewhere, because the
presence of this report means that some other call ended in a newline.  It
could be reasonable to highlight the least popular.

thanks,
julia

> 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...
>
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

WARNING: multiple messages have this Message-ID (diff)
From: Julia Lawall <julia.lawall@lip6.fr>
To: Joe Perches <joe@perches.com>
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:32:18 +0000	[thread overview]
Message-ID: <alpine.DEB.2.20.1711271028510.3445@hadrien> (raw)
In-Reply-To: <1511774737.32426.29.camel@perches.com>



On Mon, 27 Nov 2017, Joe Perches wrote:

> 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);
>  }

Sure.

>
> []
>
> 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);
>  }

OK, one could look for va_end.

> []
>
> 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);

Like the \n. problem.

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

Still, it seems that the file must contain a bug elsewhere, because the
presence of this report means that some other call ended in a newline.  It
could be reasonable to highlight the least popular.

thanks,
julia

> 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...
>
> --
> To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

  reply	other threads:[~2017-11-27  9:32 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
2017-11-27  9:25                 ` Joe Perches
2017-11-27  9:32                 ` Julia Lawall [this message]
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=alpine.DEB.2.20.1711271028510.3445@hadrien \
    --to=julia.lawall@lip6.fr \
    --cc=apw@canonical.com \
    --cc=joe@perches.com \
    --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.