diff options
author | Zhenzhong Duan <zhenzhong.duan@intel.com> | 2023-11-21 16:44:02 +0800 |
---|---|---|
committer | Cédric Le Goater <clg@redhat.com> | 2023-12-19 19:03:38 +0100 |
commit | 1eae5b7bd3ddd03b5591e9122b011c6520064a5a (patch) | |
tree | 992edd3a2ea9eba4bd0efaf5c77a198a8d840787 | |
parent | d6b5c4c1b516a8176b74ec35a0af8cf89b04b6c1 (diff) | |
download | qemu-1eae5b7bd3ddd03b5591e9122b011c6520064a5a.zip qemu-1eae5b7bd3ddd03b5591e9122b011c6520064a5a.tar.gz qemu-1eae5b7bd3ddd03b5591e9122b011c6520064a5a.tar.bz2 |
vfio/common: return early if space isn't empty
This is a trivial optimization. If there is active container in space,
vfio_reset_handler will never be unregistered. So revert the check of
space->containers and return early.
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
-rw-r--r-- | hw/vfio/common.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/hw/vfio/common.c b/hw/vfio/common.c index 572ae7c..934f4f5 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -1462,10 +1462,13 @@ VFIOAddressSpace *vfio_get_address_space(AddressSpace *as) void vfio_put_address_space(VFIOAddressSpace *space) { - if (QLIST_EMPTY(&space->containers)) { - QLIST_REMOVE(space, list); - g_free(space); + if (!QLIST_EMPTY(&space->containers)) { + return; } + + QLIST_REMOVE(space, list); + g_free(space); + if (QLIST_EMPTY(&vfio_address_spaces)) { qemu_unregister_reset(vfio_reset_handler, NULL); } |