static void virtio_gpu_queue_fenced_ctrl_buffer(struct virtio_gpu_device *vgdev,
                                                struct virtio_gpu_vbuffer *vbuf,
-                                               struct virtio_gpu_ctrl_hdr *hdr,
                                                struct virtio_gpu_fence *fence)
 {
        struct virtqueue *vq = vgdev->ctrlq.vq;
                goto again;
        }
 
-       if (hdr && fence) {
-               virtio_gpu_fence_emit(vgdev, hdr, fence);
+       if (fence) {
+               virtio_gpu_fence_emit(vgdev, virtio_gpu_vbuf_ctrl_hdr(vbuf),
+                                     fence);
                if (vbuf->objs) {
                        virtio_gpu_array_add_fence(vbuf->objs, &fence->f);
                        virtio_gpu_array_unlock_resv(vbuf->objs);
 static void virtio_gpu_queue_ctrl_buffer(struct virtio_gpu_device *vgdev,
                                         struct virtio_gpu_vbuffer *vbuf)
 {
-       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, NULL, NULL);
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, NULL);
 }
 
 static void virtio_gpu_queue_cursor(struct virtio_gpu_device *vgdev,
        cmd_p->width = cpu_to_le32(params->width);
        cmd_p->height = cpu_to_le32(params->height);
 
-       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, &cmd_p->hdr, fence);
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
        bo->created = true;
 }
 
        cmd_p->hdr.type = cpu_to_le32(VIRTIO_GPU_CMD_RESOURCE_DETACH_BACKING);
        cmd_p->resource_id = cpu_to_le32(resource_id);
 
-       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, &cmd_p->hdr, fence);
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
 }
 
 void virtio_gpu_cmd_set_scanout(struct virtio_gpu_device *vgdev,
        cmd_p->r.x = cpu_to_le32(x);
        cmd_p->r.y = cpu_to_le32(y);
 
-       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, &cmd_p->hdr, fence);
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
 }
 
 static void
        vbuf->data_buf = ents;
        vbuf->data_size = sizeof(*ents) * nents;
 
-       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, &cmd_p->hdr, fence);
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
 }
 
 static void virtio_gpu_cmd_get_display_info_cb(struct virtio_gpu_device *vgdev,
        cmd_p->nr_samples = cpu_to_le32(params->nr_samples);
        cmd_p->flags = cpu_to_le32(params->flags);
 
-       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, &cmd_p->hdr, fence);
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
        bo->created = true;
 }
 
        cmd_p->offset = cpu_to_le64(offset);
        cmd_p->level = cpu_to_le32(level);
 
-       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, &cmd_p->hdr, fence);
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
 }
 
 void virtio_gpu_cmd_transfer_from_host_3d(struct virtio_gpu_device *vgdev,
        cmd_p->offset = cpu_to_le64(offset);
        cmd_p->level = cpu_to_le32(level);
 
-       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, &cmd_p->hdr, fence);
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
 }
 
 void virtio_gpu_cmd_submit(struct virtio_gpu_device *vgdev,
        cmd_p->hdr.ctx_id = cpu_to_le32(ctx_id);
        cmd_p->size = cpu_to_le32(data_size);
 
-       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, &cmd_p->hdr, fence);
+       virtio_gpu_queue_fenced_ctrl_buffer(vgdev, vbuf, fence);
 }
 
 int virtio_gpu_object_attach(struct virtio_gpu_device *vgdev,