> @@ -300,6 +303,22 @@ int hv_ringbuffer_write(struct vmbus_channel *channel, > kv_list[i].iov_len); > } > > + /* > + * Allocate the request ID after the data has been copied into the > + * ring buffer. Once this request ID is allocated, the completion > + * path could find the data and free it. > + */ > + > + if (desc->flags == VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED) { > + rqst_id = vmbus_next_request_id(&channel->requestor, requestid); > + if (rqst_id == VMBUS_RQST_ERROR) { > + pr_err("No request id available\n"); > + return -EAGAIN; FYI, the lkp kernel test robot reported a missing call to spin_unlock_irqrestore(&outring_info->ring_lock, flags) before the above 'return': I'll address this in the next submission. Andrea