aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hv/channel_mgmt.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
index a2d1a9612c86..d36ce6835fb7 100644
--- a/drivers/hv/channel_mgmt.c
+++ b/drivers/hv/channel_mgmt.c
@@ -216,9 +216,16 @@ static void vmbus_process_rescind_offer(struct work_struct *work)
216 unsigned long flags; 216 unsigned long flags;
217 struct vmbus_channel *primary_channel; 217 struct vmbus_channel *primary_channel;
218 struct vmbus_channel_relid_released msg; 218 struct vmbus_channel_relid_released msg;
219 struct device *dev;
220
221 if (channel->device_obj) {
222 dev = get_device(&channel->device_obj->device);
223 if (dev) {
224 vmbus_device_unregister(channel->device_obj);
225 put_device(dev);
226 }
227 }
219 228
220 if (channel->device_obj)
221 vmbus_device_unregister(channel->device_obj);
222 memset(&msg, 0, sizeof(struct vmbus_channel_relid_released)); 229 memset(&msg, 0, sizeof(struct vmbus_channel_relid_released));
223 msg.child_relid = channel->offermsg.child_relid; 230 msg.child_relid = channel->offermsg.child_relid;
224 msg.header.msgtype = CHANNELMSG_RELID_RELEASED; 231 msg.header.msgtype = CHANNELMSG_RELID_RELEASED;