mirror of
https://github.com/libvirt/libvirt.git
synced 2026-10-02 12:20:06 -05:00
rpc: free saved close error in virNetClientDispose
virNetClientMarkClose() may cache the current error in client->error via virSaveLastError() when a client is marked for close. That error is normally released in virNetClientCloseLocked(), but some teardown paths can dispose the client object without reaching that cleanup. In that case, client->error remains allocated and ASan reports a leak. Free client->error in virNetClientDispose() as a final cleanup fallback. This was observed during virtchd shutdown in test_disk_is_locked, with the leak originating from: virDomainInterfaceDeleteDevice() -> remoteConnectClose() -> virNetClientMarkClose() -> virSaveLastError() On-behalf-of: SAP leander.kohler@sap.com Signed-off-by: Leander Kohler <leander.kohler@cyberus-technology.de> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
1 parent
e25b82c5f8
commit
88b5e33b4e
1 file changed
+2
@@ -757,6 +757,8 @@ void virNetClientDispose(void *obj)
|
||||
virObjectUnref(client->sasl);
|
||||
#endif
|
||||
|
||||
g_clear_pointer(&client->error, virFreeError);
|
||||
|
||||
virNetMessageClear(&client->msg);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user