hyperv: remove meaningless pr_err() in vmbus_recvpacket_raw()
[linux-2.6-block.git] / drivers / hv / channel.c
index 602ca86a6488d6d90e4927d79ed99ca6c5df42b8..531a593912ec6a5feb00ea308e13f4da93a60268 100644 (file)
@@ -471,18 +471,26 @@ int vmbus_teardown_gpadl(struct vmbus_channel *channel, u32 gpadl_handle)
 }
 EXPORT_SYMBOL_GPL(vmbus_teardown_gpadl);
 
+static void reset_channel_cb(void *arg)
+{
+       struct vmbus_channel *channel = arg;
+
+       channel->onchannel_callback = NULL;
+}
+
 static void vmbus_close_internal(struct vmbus_channel *channel)
 {
        struct vmbus_channel_close_channel *msg;
        int ret;
-       unsigned long flags;
 
        channel->state = CHANNEL_OPEN_STATE;
        channel->sc_creation_callback = NULL;
        /* Stop callback and cancel the timer asap */
-       spin_lock_irqsave(&channel->inbound_lock, flags);
-       channel->onchannel_callback = NULL;
-       spin_unlock_irqrestore(&channel->inbound_lock, flags);
+       if (channel->target_cpu != smp_processor_id())
+               smp_call_function_single(channel->target_cpu, reset_channel_cb,
+                                        channel, true);
+       else
+               reset_channel_cb(channel);
 
        /* Send a closing message */
 
@@ -674,8 +682,7 @@ int vmbus_sendpacket_multipagebuffer(struct vmbus_channel *channel,
        u32 pfncount = NUM_PAGES_SPANNED(multi_pagebuffer->offset,
                                         multi_pagebuffer->len);
 
-
-       if ((pfncount < 0) || (pfncount > MAX_MULTIPAGE_BUFFER_COUNT))
+       if (pfncount > MAX_MULTIPAGE_BUFFER_COUNT)
                return -EINVAL;
 
        /*
@@ -801,12 +808,8 @@ int vmbus_recvpacket_raw(struct vmbus_channel *channel, void *buffer,
 
        *buffer_actual_len = packetlen;
 
-       if (packetlen > bufferlen) {
-               pr_err("Buffer too small - needed %d bytes but "
-                       "got space for only %d bytes\n",
-                       packetlen, bufferlen);
+       if (packetlen > bufferlen)
                return -ENOBUFS;
-       }
 
        *requestid = desc.trans_id;