Messages in this thread | | | Date | Thu, 27 May 2010 16:22:32 -0700 | From | Greg KH <> | Subject | Re: [PATCH 1/1] staging: hv: Fix race condition on IC channel initialization (modified) |
| |
On Wed, May 26, 2010 at 10:52:36PM +0000, Haiyang Zhang wrote: > > From: Greg KH [mailto:gregkh@suse.de] > > How about a lock! > > > > What's so scary about a pretty little semaphore? They are all cute and > > cuddley and don't bite anyone. You should not be afraid to use them, > > they are here to do your bidding. > > No problem, we will add a lock here. > > > > The VmbusChannelProcessOffer() is called from interrupt context, and > > > initialize the channels, wake up vmbus_init when all channels are > > > ready. If using local variable only, how to pass the channel ready > > > info to vmbus_init() which is in a different context? > > > > No, I mean move the logic you added here, into the vmbus_init() call. > > Do you mean: > Move the event creat/wait/free, which is currently in vmbus_init(), > into vmbus_bus_init() function.
Yes.
> hv_channle_ready will still be a global variable.
That's fine.
> And, the wakeup call -- osd_WaitEventSet() --remains in > VmbusChannelProcessOffer() ?
Yes.
And as Jiri pointed out, this should be a simple completion.
thanks,
greg k-h
| |