From 88b5e33b4eecc3029d645526424dc8bd05e3e563 Mon Sep 17 00:00:00 2001 From: Leander Kohler Date: Fri, 27 Feb 2026 13:39:19 +0100 Subject: [PATCH] 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 Reviewed-by: Michal Privoznik --- src/rpc/virnetclient.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rpc/virnetclient.c b/src/rpc/virnetclient.c index 3ad4655e6e..8b78d27916 100644 --- a/src/rpc/virnetclient.c +++ b/src/rpc/virnetclient.c @@ -757,6 +757,8 @@ void virNetClientDispose(void *obj) virObjectUnref(client->sasl); #endif + g_clear_pointer(&client->error, virFreeError); + virNetMessageClear(&client->msg); }