[libvirt] [PATCH 00/11] Replace virXXXFree calls with virObjectUnref
John Ferlan
jferlan at redhat.com
Tue Dec 2 16:21:52 UTC 2014
On 12/01/2014 10:56 AM, John Ferlan wrote:
> Based on some recent review comments and a bit of internal IRC, this
> set of patches will change all the existing virXXXFree calls found in
> daemon/* and src/* to be virObjectUnref instead and then add a rule to
> inhibit usage unless the string/call is found in docs/*, tests/*, examples/*,
> tools/*, cfg.mk, libvirt_public.syms, include/libvirt/libvirt-*.h, and
> src/libvirt-*.c
>
> Most of this was brute force to start with and adding the rule afterwards
> caught a few oddball places.
>
> The reason for not wanting to call a virXXXFree function is because it
> will reset the last error, potentially clearing something and resulting
> in a message "an error was encountered but the cause is unknown". There
> were some places in the code which saved the last error, called the free
> function, then restored the last error. Those have now been adjusted to
> avoid that processing. Anything that required checking for a non NULL
> pointer prior to calling the virXXXFree is now not necessary since the
> virObjectUnref will check for NULL before continuing; whereas, the
> virXXXFree functions didn't allow NULL.
>
> If usage of the virXXXFree function is found during syntax-check, a message
> such as the following will be displayed:
>
> include/libvirt/libvirt-storage.h:256:int virStoragePoolFree (virStoragePoolPtr pool);
> include/libvirt/libvirt-storage.h:336:int virStorageVolFree (virStorageVolPtr vol);
> maint.mk: avoid using virXXXFree, use virObjectUnref instead
> make: *** [sc_prohibit_virXXXFree] Error 1
>
>
> John Ferlan (11):
> rpc: Replace virXXXFree with virObjectUnref
> Replace virDomainFree with virObjectUnref
> Replace virNetworkFree with virObjectUnref
> Replace virNodeDeviceFree with virObjectUnref
> Replace virStorageVolFree with virObjectUnref
> Replace virStoragePoolFree with virObjectUnref
> Replace virStreamFree with virObjectUnref
> Replace virSecretFree with virObjectUnref
> Replace virNWFilterFree with virObjectUnref
> Replace virInterfaceFree with virObjectUnref
> Replace virDomainSnapshotFree with virObjectUnref
>
> cfg.mk | 12 +++
> daemon/remote.c | 168 ++++++++++++--------------------
> daemon/stream.c | 2 +-
> src/conf/domain_event.c | 4 +-
> src/conf/network_conf.c | 6 +-
> src/conf/network_event.c | 2 +-
> src/conf/node_device_conf.c | 6 +-
> src/conf/storage_conf.c | 6 +-
> src/conf/virchrdev.c | 4 +-
> src/esx/esx_driver.c | 2 +-
> src/fdstream.c | 2 +-
> src/hyperv/hyperv_driver.c | 2 +-
> src/interface/interface_backend_netcf.c | 6 +-
> src/interface/interface_backend_udev.c | 2 +-
> src/libxl/libxl_conf.c | 7 +-
> src/locking/sanlock_helper.c | 3 +-
> src/lxc/lxc_driver.c | 8 +-
> src/lxc/lxc_process.c | 8 +-
> src/nwfilter/nwfilter_driver.c | 6 +-
> src/qemu/qemu_command.c | 8 +-
> src/qemu/qemu_driver.c | 4 +-
> src/qemu/qemu_hotplug.c | 8 +-
> src/remote/remote_driver.c | 76 +++++++--------
> src/rpc/gendispatch.pl | 17 ++--
> src/secret/secret_driver.c | 6 +-
> src/storage/storage_backend.c | 4 +-
> src/storage/storage_backend_fs.c | 4 +-
> src/storage/storage_backend_rbd.c | 3 +-
> src/storage/storage_driver.c | 20 +---
> src/uml/uml_conf.c | 2 +-
> src/vbox/vbox_common.c | 6 +-
> src/xenconfig/xen_common.c | 2 +-
> src/xenconfig/xen_sxpr.c | 2 +-
> 33 files changed, 155 insertions(+), 263 deletions(-)
>
Thanks for the review
- Laine: all set - rebase/merge picked that up and no thoughts to
backporting this as a whole!
- I adjusted patch 7 to remove the savedError logic and avoid the
extraneous intermediate variable
- I adjusted patch 10 to fix the commit message from "virInterfac3Free"
to be "virInterfaceFree"
and pushed (after making sure my Coverity build was happy too!)
John
More information about the libvir-list
mailing list