]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/staging/hv/Channel.c
Staging: hv: Fix vmbus event handler bug
[net-next-2.6.git] / drivers / staging / hv / Channel.c
index d649ee169d953ae3129c0ff377dd5ee866ed968f..746370e82115ce30ea1b99973dc3016d5d9cd862 100644 (file)
@@ -611,7 +611,7 @@ void VmbusChannelClose(struct vmbus_channel *Channel)
 
        /* Stop callback and cancel the timer asap */
        Channel->OnChannelCallback = NULL;
-       del_timer(&Channel->poll_timer);
+       del_timer_sync(&Channel->poll_timer);
 
        /* Send a closing message */
        info = kmalloc(sizeof(*info) +
@@ -978,14 +978,10 @@ void VmbusChannelOnChannelEvent(struct vmbus_channel *Channel)
 {
        DumpVmbusChannel(Channel);
        ASSERT(Channel->OnChannelCallback);
-#ifdef ENABLE_POLLING
-       del_timer(&Channel->poll_timer);
-       Channel->OnChannelCallback(Channel->ChannelCallbackContext);
-       channel->poll_timer.expires(jiffies + usecs_to_jiffies(100);
-       add_timer(&channel->poll_timer);
-#else
+
        Channel->OnChannelCallback(Channel->ChannelCallbackContext);
-#endif
+
+       mod_timer(&Channel->poll_timer, jiffies + usecs_to_jiffies(100));
 }
 
 /**
@@ -997,10 +993,6 @@ void VmbusChannelOnTimer(unsigned long data)
 
        if (channel->OnChannelCallback) {
                channel->OnChannelCallback(channel->ChannelCallbackContext);
-#ifdef ENABLE_POLLING
-               channel->poll_timer.expires(jiffies + usecs_to_jiffies(100);
-               add_timer(&channel->poll_timer);
-#endif
        }
 }