mirror of https://gitee.com/openkylin/qemu.git
virtio-crypto: avoid one cryptodev device is used by multiple virtio crypto devices
Add the check condition for cryptodev device in order to avoid one cryptodev device is used by multiple virtio crypto devices. Signed-off-by: Gonglei <arei.gonglei@huawei.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
305f5131ac
commit
b89f8c80cc
|
@ -877,6 +877,20 @@ static void virtio_crypto_class_init(ObjectClass *klass, void *data)
|
|||
vdc->reset = virtio_crypto_reset;
|
||||
}
|
||||
|
||||
static void
|
||||
virtio_crypto_check_cryptodev_is_used(Object *obj, const char *name,
|
||||
Object *val, Error **errp)
|
||||
{
|
||||
if (cryptodev_backend_is_used(CRYPTODEV_BACKEND(val))) {
|
||||
char *path = object_get_canonical_path_component(val);
|
||||
error_setg(errp,
|
||||
"can't use already used cryptodev backend: %s", path);
|
||||
g_free(path);
|
||||
} else {
|
||||
qdev_prop_allow_set_link_before_realize(obj, name, val, errp);
|
||||
}
|
||||
}
|
||||
|
||||
static void virtio_crypto_instance_init(Object *obj)
|
||||
{
|
||||
VirtIOCrypto *vcrypto = VIRTIO_CRYPTO(obj);
|
||||
|
@ -890,7 +904,7 @@ static void virtio_crypto_instance_init(Object *obj)
|
|||
object_property_add_link(obj, "cryptodev",
|
||||
TYPE_CRYPTODEV_BACKEND,
|
||||
(Object **)&vcrypto->conf.cryptodev,
|
||||
qdev_prop_allow_set_link_before_realize,
|
||||
virtio_crypto_check_cryptodev_is_used,
|
||||
OBJ_PROP_LINK_UNREF_ON_RELEASE, NULL);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue