Staging: hv: vmbus: Don't free the channel when the channel is closed
authorK. Y. Srinivasan <kys@microsoft.com>
Mon, 6 Jun 2011 22:49:35 +0000 (15:49 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 7 Jun 2011 20:45:47 +0000 (13:45 -0700)
When the driver unloads, the device must persist. A channel represents the
device and so we should not free the channel when the channel is closed as
part of the driver unloading.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Abhishek Kane <v-abkane@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/hv/channel.c

index f655e59a9a8fb3c6cba0515dded3c609687166c8..aca9ac8cc376b186e1c2794149e1663ba828271a 100644 (file)
@@ -552,7 +552,6 @@ void vmbus_close(struct vmbus_channel *channel)
 {
        struct vmbus_channel_close_channel *msg;
        struct vmbus_channel_msginfo *info;
-       unsigned long flags;
        int ret;
 
        /* Stop callback and cancel the timer asap */
@@ -591,19 +590,6 @@ void vmbus_close(struct vmbus_channel *channel)
 
        kfree(info);
 
-       /*
-        * If we are closing the channel during an error path in
-        * opening the channel, don't free the channel since the
-        * caller will free the channel
-        */
-
-       if (channel->state == CHANNEL_OPEN_STATE) {
-               spin_lock_irqsave(&vmbus_connection.channel_lock, flags);
-               list_del(&channel->listentry);
-               spin_unlock_irqrestore(&vmbus_connection.channel_lock, flags);
-
-               free_channel(channel);
-       }
 }
 EXPORT_SYMBOL_GPL(vmbus_close);