提交 d10cfaec 编写于 作者: M Michal Privoznik

qemuOpenVhostNet: Decrease vhostfdSize on open failure

Currently, if there's an error opening /dev/vhost-net (e.g. because
it doesn't exist) but it's not required we proceed with vhostfd array
filled with -1 and vhostfdSize unchanged. Later, when constructing
the qemu command line only non-negative items within vhostfd array
are taken into account. This means, vhostfdSize may be greater than
the actual count of non-negative items in vhostfd array. This results
in improper command line arguments being generated, e.g.:

-netdev tap,fd=21,id=hostnet0,vhost=on,vhostfd=(null)
上级 f6817c70
......@@ -486,6 +486,10 @@ qemuOpenVhostNet(virDomainDefPtr def,
"but is unavailable"));
goto error;
}
VIR_WARN("Unable to open vhost-net. Opened so far %d, requested %d",
i, *vhostfdSize);
*vhostfdSize = i;
break;
}
}
virDomainAuditNetDevice(def, net, "/dev/vhost-net", *vhostfdSize);
......@@ -6560,12 +6564,10 @@ qemuBuildInterfaceCommandLine(virCommandPtr cmd,
}
for (i = 0; i < vhostfdSize; i++) {
if (vhostfd[i] >= 0) {
virCommandTransferFD(cmd, vhostfd[i]);
if (virAsprintf(&vhostfdName[i], "%d", vhostfd[i]) < 0) {
virReportOOMError();
goto cleanup;
}
virCommandTransferFD(cmd, vhostfd[i]);
if (virAsprintf(&vhostfdName[i], "%d", vhostfd[i]) < 0) {
virReportOOMError();
goto cleanup;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册