• Mike Christie's avatar
    vhost: create worker at end of vhost_dev_set_owner · 3e11c6eb
    Mike Christie authored
    vsock can start queueing work after VHOST_VSOCK_SET_GUEST_CID, so
    after we have called vhost_worker_create it can be calling
    vhost_work_queue and trying to access the vhost worker/task. If
    vhost_dev_alloc_iovecs fails, then vhost_worker_free could free
    the worker/task from under vsock.
    
    This moves vhost_worker_create to the end of vhost_dev_set_owner
    where we know we can no longer fail in that path. If it fails
    after the VHOST_SET_OWNER and userspace closes the device, then
    the normal vsock release handling will do the right thing.
    Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
    Message-Id: <20230626232307.97930-2-michael.christie@oracle.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    3e11c6eb
vhost.c 62.7 KB