From: Joe Perches <joe@perches.com>
To: kernel-janitors@vger.kernel.org
Subject: Re: [patch] nvme-fabrics: correct some printk information
Date: Sun, 11 Dec 2016 00:36:48 +0000 [thread overview]
Message-ID: <1481416608.1764.7.camel@perches.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1612102104050.1986@hadrien>
On Sat, 2016-12-10 at 21:06 +0100, Julia Lawall wrote:
>
> On Sat, 10 Dec 2016, Dan Carpenter wrote:
>
> > On Sat, Dec 10, 2016 at 03:27:50AM -0800, Joe Perches wrote:
> > > On Sat, 2016-12-10 at 12:06 +0300, Dan Carpenter wrote:
> > > > We really don't care where "ctrl" is on the stack since we're just
> > > > returning soon what we want is the actual ctrl pointer itself.
> > > >
> > > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> > > >
> > > > diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
> > >
> > > []
> > > > @@ -2402,7 +2402,7 @@ enum blk_eh_timer_return
> > > >
> > > > dev_info(ctrl->ctrl.device,
> > > > "NVME-FC{%d}: new ctrl: NQN \"%s\" (%p)\n",
> > > > - ctrl->cnum, ctrl->ctrl.opts->subsysnqn, &ctrl);
> > > > + ctrl->cnum, ctrl->ctrl.opts->subsysnqn, ctrl);
> > >
> > > Found by script or inspection?
> > >
> > > If by script, it seems unlikely there's only 1 instance
> > > where an address of an automatic pointer type is used
> > > incorrectly.
> >
> > Script. But it's using a pretty specific heuristic where we kmalloc a
> > pointer and then pass the address. It prints few warnings. Probably
> > 40% false positives, but the remaining examples of course are 100% false
> > positives.
>
> I tried anything that looks like a print, ie has a format string argument,
> and was taking the address of a local variable as another argument. But
> there are lots of weird format designators in the kernel that Coccinelle
> doesn't know about for which passing the address of a local variable is
> reasonable. So for the moment, there are, as far as I can see, just a lot
> of false positives. I did add improving the support for format strings to
> my TODO list.
fyi: A message from Rasmus awhile ago on the smatch list
sent to me and Dan that's relevant.
(AFAIK: this list isn't archived anywhere)
On Wed, 2015-02-11 at 11:34 +0100, Rasmus Villemoes wrote:
> Hi,
>
> As mentioned, I've been working on getting smatch to do type checking of
> the various %p format extensions. The code is now on github
> (https://github.com/Villemoes/smatch).
>
> Note that this work revealed a bug in sparse's handling of string
> literals coming from macro expansions
> (http://thread.gmane.org/gmane.comp.parsers.sparse/4080). I've applied
> one of the suggested fixes, but it's still not clear to me what the
> final fix will be in sparse upstream. Anyway, this was good enough to
> get the ball rolling.
>
> While developing this, I found it useful to only enable that specific
> check (both to get smatch run faster and to get less noise in the
> output), so there's also a few unrelated patches in the printf branch
> implementing that feature.
>
> sparse currently ignores attribute((format)), so the list of printf functions
> has been extracted with a perl script and hard-coded. Even if sparse
> understood attribute((format)), I wouldn't know how to set up a hook for
> 'call of function with this or that attribute'.
>
> I don't think it's ready to be merged upstream (and whether that will
> even happen is of course entirely up to Dan), but now it's out there for
> people to play with. I have already sent patches for the four %p bugs
> found, but there may be a few more lurking in arch/<not x86>/ - I don't
> know how to pursuade the build system to go there.
>
> Rasmus
WARNING: multiple messages have this Message-ID (diff)
From: joe@perches.com (Joe Perches)
Subject: [patch] nvme-fabrics: correct some printk information
Date: Sat, 10 Dec 2016 16:36:48 -0800 [thread overview]
Message-ID: <1481416608.1764.7.camel@perches.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1612102104050.1986@hadrien>
On Sat, 2016-12-10@21:06 +0100, Julia Lawall wrote:
>
> On Sat, 10 Dec 2016, Dan Carpenter wrote:
>
> > On Sat, Dec 10, 2016@03:27:50AM -0800, Joe Perches wrote:
> > > On Sat, 2016-12-10@12:06 +0300, Dan Carpenter wrote:
> > > > We really don't care where "ctrl" is on the stack since we're just
> > > > returning soon what we want is the actual ctrl pointer itself.
> > > >
> > > > Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
> > > >
> > > > diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
> > >
> > > []
> > > > @@ -2402,7 +2402,7 @@ enum blk_eh_timer_return
> > > >
> > > > dev_info(ctrl->ctrl.device,
> > > > "NVME-FC{%d}: new ctrl: NQN \"%s\" (%p)\n",
> > > > - ctrl->cnum, ctrl->ctrl.opts->subsysnqn, &ctrl);
> > > > + ctrl->cnum, ctrl->ctrl.opts->subsysnqn, ctrl);
> > >
> > > Found by script or inspection?
> > >
> > > If by script, it seems unlikely there's only 1 instance
> > > where an address of an automatic pointer type is used
> > > incorrectly.
> >
> > Script. But it's using a pretty specific heuristic where we kmalloc a
> > pointer and then pass the address. It prints few warnings. Probably
> > 40% false positives, but the remaining examples of course are 100% false
> > positives.
>
> I tried anything that looks like a print, ie has a format string argument,
> and was taking the address of a local variable as another argument. But
> there are lots of weird format designators in the kernel that Coccinelle
> doesn't know about for which passing the address of a local variable is
> reasonable. So for the moment, there are, as far as I can see, just a lot
> of false positives. I did add improving the support for format strings to
> my TODO list.
fyi: A message from Rasmus awhile ago on the smatch list
sent to me and Dan that's relevant.
(AFAIK: this list isn't archived anywhere)
On Wed, 2015-02-11@11:34 +0100, Rasmus Villemoes wrote:
> Hi,
>
> As mentioned, I've been working on getting smatch to do type checking of
> the various %p format extensions. The code is now on github
> (https://github.com/Villemoes/smatch).
>
> Note that this work revealed a bug in sparse's handling of string
> literals coming from macro expansions
> (http://thread.gmane.org/gmane.comp.parsers.sparse/4080). I've applied
> one of the suggested fixes, but it's still not clear to me what the
> final fix will be in sparse upstream. Anyway, this was good enough to
> get the ball rolling.
>
> While developing this, I found it useful to only enable that specific
> check (both to get smatch run faster and to get less noise in the
> output), so there's also a few unrelated patches in the printf branch
> implementing that feature.
>
> sparse currently ignores attribute((format)), so the list of printf functions
> has been extracted with a perl script and hard-coded. Even if sparse
> understood attribute((format)), I wouldn't know how to set up a hook for
> 'call of function with this or that attribute'.
>
> I don't think it's ready to be merged upstream (and whether that will
> even happen is of course entirely up to Dan), but now it's out there for
> people to play with. I have already sent patches for the four %p bugs
> found, but there may be a few more lurking in arch/<not x86>/ - I don't
> know how to pursuade the build system to go there.
>
> Rasmus
WARNING: multiple messages have this Message-ID (diff)
From: Joe Perches <joe@perches.com>
To: Julia Lawall <julia.lawall@lip6.fr>,
Dan Carpenter <dan.carpenter@oracle.com>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: James Smart <james.smart@broadcom.com>,
Keith Busch <keith.busch@intel.com>, Jens Axboe <axboe@fb.com>,
linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org,
kernel-janitors@vger.kernel.org
Subject: Re: [patch] nvme-fabrics: correct some printk information
Date: Sat, 10 Dec 2016 16:36:48 -0800 [thread overview]
Message-ID: <1481416608.1764.7.camel@perches.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1612102104050.1986@hadrien>
On Sat, 2016-12-10 at 21:06 +0100, Julia Lawall wrote:
>
> On Sat, 10 Dec 2016, Dan Carpenter wrote:
>
> > On Sat, Dec 10, 2016 at 03:27:50AM -0800, Joe Perches wrote:
> > > On Sat, 2016-12-10 at 12:06 +0300, Dan Carpenter wrote:
> > > > We really don't care where "ctrl" is on the stack since we're just
> > > > returning soon what we want is the actual ctrl pointer itself.
> > > >
> > > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> > > >
> > > > diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
> > >
> > > []
> > > > @@ -2402,7 +2402,7 @@ enum blk_eh_timer_return
> > > >
> > > > dev_info(ctrl->ctrl.device,
> > > > "NVME-FC{%d}: new ctrl: NQN \"%s\" (%p)\n",
> > > > - ctrl->cnum, ctrl->ctrl.opts->subsysnqn, &ctrl);
> > > > + ctrl->cnum, ctrl->ctrl.opts->subsysnqn, ctrl);
> > >
> > > Found by script or inspection?
> > >
> > > If by script, it seems unlikely there's only 1 instance
> > > where an address of an automatic pointer type is used
> > > incorrectly.
> >
> > Script. But it's using a pretty specific heuristic where we kmalloc a
> > pointer and then pass the address. It prints few warnings. Probably
> > 40% false positives, but the remaining examples of course are 100% false
> > positives.
>
> I tried anything that looks like a print, ie has a format string argument,
> and was taking the address of a local variable as another argument. But
> there are lots of weird format designators in the kernel that Coccinelle
> doesn't know about for which passing the address of a local variable is
> reasonable. So for the moment, there are, as far as I can see, just a lot
> of false positives. I did add improving the support for format strings to
> my TODO list.
fyi: A message from Rasmus awhile ago on the smatch list
sent to me and Dan that's relevant.
(AFAIK: this list isn't archived anywhere)
On Wed, 2015-02-11 at 11:34 +0100, Rasmus Villemoes wrote:
> Hi,
>
> As mentioned, I've been working on getting smatch to do type checking of
> the various %p format extensions. The code is now on github
> (https://github.com/Villemoes/smatch).
>
> Note that this work revealed a bug in sparse's handling of string
> literals coming from macro expansions
> (http://thread.gmane.org/gmane.comp.parsers.sparse/4080). I've applied
> one of the suggested fixes, but it's still not clear to me what the
> final fix will be in sparse upstream. Anyway, this was good enough to
> get the ball rolling.
>
> While developing this, I found it useful to only enable that specific
> check (both to get smatch run faster and to get less noise in the
> output), so there's also a few unrelated patches in the printf branch
> implementing that feature.
>
> sparse currently ignores attribute((format)), so the list of printf functions
> has been extracted with a perl script and hard-coded. Even if sparse
> understood attribute((format)), I wouldn't know how to set up a hook for
> 'call of function with this or that attribute'.
>
> I don't think it's ready to be merged upstream (and whether that will
> even happen is of course entirely up to Dan), but now it's out there for
> people to play with. I have already sent patches for the four %p bugs
> found, but there may be a few more lurking in arch/<not x86>/ - I don't
> know how to pursuade the build system to go there.
>
> Rasmus
next prev parent reply other threads:[~2016-12-11 0:36 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-10 9:06 [patch] nvme-fabrics: correct some printk information Dan Carpenter
2016-12-10 9:06 ` Dan Carpenter
2016-12-10 9:06 ` Dan Carpenter
2016-12-10 11:27 ` Joe Perches
2016-12-10 11:27 ` Joe Perches
2016-12-10 11:27 ` Joe Perches
2016-12-10 18:55 ` Dan Carpenter
2016-12-10 18:55 ` Dan Carpenter
2016-12-10 18:55 ` Dan Carpenter
2016-12-10 20:06 ` Julia Lawall
2016-12-10 20:06 ` Julia Lawall
2016-12-10 20:06 ` Julia Lawall
2016-12-10 20:24 ` Dan Carpenter
2016-12-10 20:24 ` Dan Carpenter
2016-12-10 20:24 ` Dan Carpenter
2016-12-10 20:54 ` Joe Perches
2016-12-10 20:54 ` Joe Perches
2016-12-10 20:54 ` Joe Perches
2016-12-10 21:07 ` Dan Carpenter
2016-12-10 21:07 ` Dan Carpenter
2016-12-10 21:07 ` Dan Carpenter
2016-12-10 22:24 ` Joe Perches
2016-12-10 22:24 ` Joe Perches
2016-12-10 22:24 ` Joe Perches
2016-12-12 9:33 ` Dan Carpenter
2016-12-12 9:33 ` Dan Carpenter
2016-12-12 9:33 ` Dan Carpenter
2016-12-12 15:47 ` Julia Lawall
2016-12-12 15:47 ` Julia Lawall
2016-12-12 15:47 ` Julia Lawall
2016-12-12 15:55 ` Joe Perches
2016-12-12 15:55 ` Joe Perches
2016-12-12 15:55 ` Joe Perches
2016-12-10 22:07 ` Julia Lawall
2016-12-10 22:07 ` Julia Lawall
2016-12-10 22:07 ` Julia Lawall
2016-12-10 22:27 ` Joe Perches
2016-12-10 22:27 ` Joe Perches
2016-12-10 22:27 ` Joe Perches
2016-12-11 0:36 ` Joe Perches [this message]
2016-12-11 0:36 ` Joe Perches
2016-12-11 0:36 ` Joe Perches
2016-12-20 0:40 ` James Smart
2016-12-20 0:40 ` James Smart
2016-12-20 0:40 ` James Smart
2016-12-20 9:16 ` Dan Carpenter
2016-12-20 9:16 ` Dan Carpenter
2016-12-20 9:16 ` Dan Carpenter
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=1481416608.1764.7.camel@perches.com \
--to=joe@perches.com \
--cc=kernel-janitors@vger.kernel.org \
/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.