While the FDs are closed right after use to prevent leaks, at certain
point we don't need the whole helper any more. Clear them for char
devices after hotplug and on start.
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
virCommandAddArgList(cmd, "-chardev", charstr, NULL);
+ qemuDomainChrSourcePrivateClearFDPass(chrSourcePriv);
+
return 0;
}
}
+void
+qemuDomainChrSourcePrivateClearFDPass(qemuDomainChrSourcePrivate *priv)
+{
+ if (!priv)
+ return;
+
+ g_clear_pointer(&priv->sourcefd, qemuFDPassFree);
+ g_clear_pointer(&priv->logfd, qemuFDPassFree);
+}
+
+
static void
qemuDomainChrSourcePrivateDispose(void *obj)
{
qemuDomainChrSourcePrivate *priv = obj;
- qemuFDPassFree(priv->sourcefd);
- qemuFDPassFree(priv->logfd);
+ qemuDomainChrSourcePrivateClearFDPass(priv);
g_free(priv->tlsCertPath);
};
+void
+qemuDomainChrSourcePrivateClearFDPass(qemuDomainChrSourcePrivate *priv);
+
typedef struct _qemuDomainVsockPrivate qemuDomainVsockPrivate;
struct _qemuDomainVsockPrivate {
virObject parent;
if (teardowndevice && qemuDomainNamespaceTeardownChardev(vm, chr) < 0)
VIR_WARN("Unable to remove chr device from /dev");
}
+
+ qemuDomainChrSourcePrivateClearFDPass(charpriv);
+
return ret;
exit_monitor: