All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Brownell <david-b@pacbell.net>
To: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-sparse@vger.kernel.org
Subject: Re: sparse context warning problem ...
Date: Wed, 14 May 2008 06:58:03 -0700	[thread overview]
Message-ID: <200805140658.04018.david-b@pacbell.net> (raw)
In-Reply-To: <1210715568.4279.35.camel@johannes.berg>

On Tuesday 13 May 2008, Johannes Berg wrote:

> Actually, it turns out my analysis was completely wrong.
> 
> This is exactly the issue I pointed out in my other mail. You have:
> 
> __acquires(ohci->lock)
>            ^^^^^^^^^^
> but, on the other hand:
> 
> spin_unlock (&ohci->lock);
>              ^
> 
> I think you can fix this particular case by adding the & in the
> __acquires(), but that will only work for UP,

I used the OHCI example because it was a clear and readily
available/reproducible example of how this is a regression;
but I came across the problem with a different driver.  In
that driver, I just made sure that the strings were now
identical ... and the failures still came up with "sparse".

That's on a UP build.  (Albeit with PREEMPT and all the
debug options available ... since I'm debugging!)


> for actual spinlocks my 
> other patches will be needed, because w/o my patches sparse will, on
> SMP, not be able to see that
> 
> void __lockfunc _spin_lock(spinlock_t *lock)            __acquires(lock);
> 
> means to lock "&ohci->lock" when doing "spin_lock(&ohci->lock);" but
> will treat it as locking the abstractly-named "lock" context, while on
> UP/no-preempt the "spin_lock" macro is expanded by the preprocessor and
> you will get "&ohci->lock" as the expression.

Yeah, well the lock being acquired or released *IS* "ohci->lock",
but the spinlock calls don't take the lock, they take pointers
to it!

If you were to argue that understanding pointers like that is a
lot to demand of "sparse", I might agree.  But that won't change
the fact that locks themselves are not pointers to locks.  ;)


> Ultimately, this whole problem comes from the fact that sparse accepted
> adding an expression, documented it, but never complained if they
> slightly mismatched as above.

This still doesn't quite add up, though...

- Dave

--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" 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:[~2008-05-14 13:58 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-11  0:24 sparse context warning problem David Brownell
2008-05-11  0:40 ` Johannes Berg
2008-05-11  3:18   ` David Brownell
2008-05-11  9:46     ` Johannes Berg
2008-05-13 21:52   ` Johannes Berg
2008-05-14 13:58     ` David Brownell [this message]
2008-05-14 14:06       ` Johannes Berg
2008-05-29  8:47       ` Johannes Berg
2008-05-29  9:39         ` David Brownell
2008-05-29  9:54           ` Johannes Berg

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=200805140658.04018.david-b@pacbell.net \
    --to=david-b@pacbell.net \
    --cc=johannes@sipsolutions.net \
    --cc=linux-sparse@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.