lkml.org 
[lkml]   [2010]   [May]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 1/1] staging: hv: Fix race condition on IC channel initialization (modified)
On 05/26/2010 11:25 PM, Haiyang Zhang wrote:
>> From: Greg KH [mailto:gregkh@suse.de]
>>> + VmbusChannelOpen(newChannel, 2 * PAGE_SIZE,
>>> + 2 * PAGE_SIZE, NULL, 0,
>>> + hv_cb_utils[cnt].callback,
>>> + newChannel) == 0) {
>>> + hv_cb_utils[cnt].channel = newChannel;
>>> + mb();
>>
>> What is the mb() call for? Why is it necessary? (hint, if you need it,
>> something else is really wrong...)
>
> It ensures the channel assignment happens before the wakeup call:
> osd_WaitEventSet(ic_channel_ready), if the compiler optimization re-arrange
> the execution order.

wake_up() is a barrier, you don't need the mb() there.

BTW osd_WaitEventSet et al. can be easily converted to completion.

--
js


\
 
 \ /
  Last update: 2010-05-27 08:19    [W:0.877 / U:0.188 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site