
On 08/16/2016 11:41 AM, Michal Privoznik wrote:
There's no need to reinvent the wheel here. We already have a function to format virDomainChrSourceDefPtr. It's called qemuBuildChrChardevStr(). Use that instead of some dummy virBufferAsprintf().
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_command.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index c419ecf..59fcb4c 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7848,7 +7848,7 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd, virQEMUCapsPtr qemuCaps, unsigned int bootindex) { - virBuffer chardev_buf = VIR_BUFFER_INITIALIZER; + char *chardev = NULL; virBuffer netdev_buf = VIR_BUFFER_INITIALIZER; unsigned int queues = net->driver.virtio.queues; char *nic = NULL; @@ -7861,9 +7861,10 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd,
switch ((virDomainChrType) net->data.vhostuser->type) { case VIR_DOMAIN_CHR_TYPE_UNIX: - virBufferAsprintf(&chardev_buf, "socket,id=char%s,path=%s%s", - net->info.alias, net->data.vhostuser->data.nix.path, - net->data.vhostuser->data.nix.listen ? ",server" : ""); + if (!(chardev = qemuBuildChrChardevStr(NULL, NULL, NULL, def,
logManager == NULL? cmd == NULL? cfg == NULL? if (dev->logfile) code will surely have problems (as will the TLS code) While true your narrow usage could avoid the TLS code that's going to dereference cfg without doing the obligatory "cfg &&", I'm still not clear how it would avoid the dev->logfile code. Shouldn't this support that logManager anyway? If not, then perhaps it needs to be more explicit. IOW: Extra checks. John
+ net->data.vhostuser, + net->info.alias, qemuCaps, false))) + goto error; break;
case VIR_DOMAIN_CHR_TYPE_NULL: @@ -7881,7 +7882,7 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd, case VIR_DOMAIN_CHR_TYPE_LAST: virReportError(VIR_ERR_INTERNAL_ERROR, _("vhost-user type '%s' not supported"), - virDomainChrTypeToString(net->data.vhostuser->type)); + virDomainChrTypeToString(net->data.vhostuser->type)); goto error; }
@@ -7899,7 +7900,8 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd, }
virCommandAddArg(cmd, "-chardev"); - virCommandAddArgBuffer(cmd, &chardev_buf); + virCommandAddArg(cmd, chardev); + VIR_FREE(chardev);
virCommandAddArg(cmd, "-netdev"); virCommandAddArgBuffer(cmd, &netdev_buf); @@ -7917,7 +7919,7 @@ qemuBuildVhostuserCommandLine(virCommandPtr cmd, return 0;
error: - virBufferFreeAndReset(&chardev_buf); + VIR_FREE(chardev); virBufferFreeAndReset(&netdev_buf); VIR_FREE(nic);