Messages in this thread | | | From | "Dilger, Andreas" <> | Subject | Re: [PATCH 4/4] Staging: lustre: sparse lock warning fix | Date | Wed, 20 May 2015 22:51:34 +0000 |
| |
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?
Cheers, Andreas -- Andreas Dilger
Lustre Software Architect Intel High Performance Data Division
| |