return round_down(ret, 8);
 }
 
+static int __hvs_send_data(struct vmbus_channel *chan,
+                          struct vmpipe_proto_header *hdr,
+                          size_t to_write)
+{
+       hdr->pkt_type = 1;
+       hdr->data_size = to_write;
+       return vmbus_sendpacket(chan, hdr, sizeof(*hdr) + to_write,
+                               0, VM_PKT_DATA_INBAND, 0);
+}
+
 static int hvs_send_data(struct vmbus_channel *chan,
                         struct hvs_send_buf *send_buf, size_t to_write)
 {
-       send_buf->hdr.pkt_type = 1;
-       send_buf->hdr.data_size = to_write;
-       return vmbus_sendpacket(chan, &send_buf->hdr,
-                               sizeof(send_buf->hdr) + to_write,
-                               0, VM_PKT_DATA_INBAND, 0);
+       return __hvs_send_data(chan, &send_buf->hdr, to_write);
 }
 
 static void hvs_channel_cb(void *ctx)
                return;
 
        /* It can't fail: see hvs_channel_writable_bytes(). */
-       (void)hvs_send_data(hvs->chan, (struct hvs_send_buf *)&hdr, 0);
+       (void)__hvs_send_data(hvs->chan, &hdr, 0);
        hvs->fin_sent = true;
 }