linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: "Dilger, Andreas" <andreas.dilger@intel.com>
Cc: "open list:STAGING SUBSYSTEM" <devel@driverdev.osuosl.org>,
	Greg Donald <gdonald@gmail.com>,
	Adrian Remonda <adrianremonda@gmail.com>,
	open list <linux-kernel@vger.kernel.org>,
	"Drokin, Oleg" <oleg.drokin@intel.com>,
	Julia Lawall <Julia.Lawall@lip6.fr>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"moderated list:STAGING - LUSTRE..." <HPDD-discuss@ml01.01.org>,
	Joe Perches <joe@perches.com>
Subject: Re: [PATCH 4/4] Staging: lustre: sparse lock warning fix
Date: Fri, 22 May 2015 16:38:03 +0300	[thread overview]
Message-ID: <20150522133803.GP4150@mwanda> (raw)
In-Reply-To: <D1826B62.F1AAD%andreas.dilger@intel.com>

On Wed, May 20, 2015 at 10:51:34PM +0000, Dilger, Andreas wrote:
> On 2015/05/20, 1:42 PM, "Dan Carpenter" <dan.carpenter@oracle.com> wrote:
> 
> >In Smatch, it the equivalent warning is turned off by default because
> >there are too many false positives, but you can enable it with the
> >--spammy flag.
> >
> >kchecker --spammy drivers/staging/lustre/lustre/ptlrpc/nrs.c
> >
> >drivers/staging/lustre/lustre/ptlrpc/nrs.c:512 nrs_resource_put_safe()
> >warn: 'spin_lock:&nrs->nrs_lock' is sometimes locked here and sometimes
> >unlocked.
> 
> Would this be happier with something like:
> 
>         for (i = 0; i < NRS_RES_MAX; i++) {
> 		if (pols[i] == NULL)
> 			continue;
>         
> 
> 		if (nrs == NULL) {
> 			nrs = pols[i]->pol_nrs;
> 			if (likely(nrs != NULL)) /* make sparse happy */
> 				spin_lock(&nrs->nrs_lock);
> 		}
> 		nrs_policy_put_locked(pols[i]);
> 	}
> 
> 	if (nrs != NULL)
> 	spin_unlock(&nrs->nrs_lock);
> 
> so that the "if" conditions are the same? The code definitely doesn't
> have a bug, because the lock is only locked once when nrs is first set,
> and only unlocked if it is set.  Or is there a comment to put there that
> will quiet the static checker?

Forget about Sparse, it's good at some things and it's fast but it has
crappy flow analysis compared to Smatch.

Adding that check does actually silence the warning in Smatch but it's
a bad idea.  Smatch is supposed to know that "nrs" is non-NULL because
of the dereference on the next line.  I think this is a recent
regression.  I'll look into it.

Smatch doesn't have a way to silence false positives.  It's still
developing, so many of these false positives can be solved by improving
the flow analysis.

regards,
dan carpenter


  reply	other threads:[~2015-05-22 13:38 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1431974091-26363-1-git-send-email-adrianremonda@gmail.com>
2015-05-18 18:34 ` [PATCH 1/4] Staging: lustre: sparse static warning fix Adrian Remonda
2015-05-18 18:34   ` [PATCH 2/4] " Adrian Remonda
2015-05-18 18:34     ` [PATCH 3/4] Staging: lustre: Fixed typo Adrian Remonda
2015-05-18 18:34       ` [PATCH 4/4] Staging: lustre: sparse lock warning fix Adrian Remonda
2015-05-18 21:21         ` Dan Carpenter
2015-05-20 16:51           ` Dilger, Andreas
2015-05-20 19:29             ` Dan Carpenter
2015-05-20 19:42               ` Dan Carpenter
2015-05-20 22:51                 ` Dilger, Andreas
2015-05-22 13:38                   ` Dan Carpenter [this message]
2015-05-21  8:15           ` AdrianRemonda
2015-05-21 15:12             ` Dan Carpenter
2015-05-21 15:33               ` Drokin, Oleg
2015-05-22  1:11                 ` Nikitas Angelinas
2015-05-18 21:23   ` [PATCH 1/4] Staging: lustre: sparse static " 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=20150522133803.GP4150@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=HPDD-discuss@ml01.01.org \
    --cc=Julia.Lawall@lip6.fr \
    --cc=adrianremonda@gmail.com \
    --cc=andreas.dilger@intel.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gdonald@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oleg.drokin@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).