Subject: Re: [PATCH/RFC 2.6.21 3/5] ehca: completion queue: remove use of do_mmap()

From: Christoph Hellwig <[email-masked]>
Date: Thu, 11 Jan 2007 19:43:46 +0000

On Thu, Jan 11, 2007 at 01:40:54PM -0600, Nathan Lynch wrote:
> Christoph Hellwig wrote:
> > On Thu, Jan 11, 2007 at 08:08:36PM +0100, Hoang-Nam Nguyen wrote:
> > 
> > >  	spin_lock_irqsave(&ehca_cq_idr_lock, flags);
> > >  	while (my_cq->nr_callbacks)
> > >  		yield();
> > 
> > Calling yield is a very bad idea in general.  You should probably
> > add a waitqueue that gets woken when nr_callbacks reaches zero to
> > sleep effectively here.
> 
> Isn't that code outright buggy?  Calling into the scheduler with a
> spinlock held and local interrupts disabled...

Umm, yes - of course.  I missed the spin_lock_irqsave line just above.