Re: [PATCH] lock assertion macros for 2.5.30

Jesse Barnes (jbarnes@sgi.com)
Wed, 7 Aug 2002 14:08:55 -0700


On Wed, Aug 07, 2002 at 06:02:19PM -0300, Rik van Riel wrote:
> On Wed, 7 Aug 2002, Jesse Barnes wrote:
>
> > +++ linux-2.5.30-lockassert/drivers/scsi/scsi.c Wed Aug 7 11:35:32 2002
> > @@ -262,7 +262,7 @@
>
> > + MUST_NOT_HOLD(q->queue_lock);
>
> ...
>
> > +#if defined(CONFIG_DEBUG_SPINLOCK) && defined(CONFIG_SMP)
> > +#define MUST_HOLD(lock) BUG_ON(!spin_is_locked(lock))
> > +#define MUST_NOT_HOLD(lock) BUG_ON(spin_is_locked(lock))
>
> Please tell me the MUST_NOT_HOLD thing is a joke.
>
> What is to prevent another CPU in another code path
> from holding this spinlock when the code you've
> inserted the MUST_NOT_HOLD in is on its merry way
> not holding the lock ?

Nothing at all, but isn't that how the scsi ASSERT_LOCK(&lock, 0)
macro worked before? I could just remove all those checks in the scsi
code I guess.

After I posted the last patch, a few people asked for MUST_NOT_HOLD so
I added it back in. Do you think it's a bad idea? See the last
thread if you're curious (Joshua's comments in particular):
http://marc.theaimsgroup.com/?t=102764009400001&r=1&w=2

Thanks,
Jesse
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/