mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-27 02:51:16 +00:00
Allow USB hostdev product to be 0x0000
Product = 0 is a valid value based on this bug report: https://www.redhat.com/archives/libvir-list/2009-May/msg00368.html Also, throw a less ambiguous error if vendor = 0.
This commit is contained in:
parent
ac75bd1b1e
commit
502278d5b2
@ -1,3 +1,10 @@
|
|||||||
|
Tue Jun 16 14:30:05 EDT 2009 Cole Robinson <crobinso@redhat.com>
|
||||||
|
|
||||||
|
* src/domain_conf.c
|
||||||
|
tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-product.args
|
||||||
|
tests/qemuxml2argvdata/qemuxml2argv-hostdev-usb-product.xml:
|
||||||
|
Allow USB hostdev product to be 0x0000
|
||||||
|
|
||||||
Tue Jun 16 11:43:17 EDT 2009 Cole Robinson <crobinso@redhat.com>
|
Tue Jun 16 11:43:17 EDT 2009 Cole Robinson <crobinso@redhat.com>
|
||||||
|
|
||||||
* src/storage_backend_fs.c: Fix FS volume creation with backing stores.
|
* src/storage_backend_fs.c: Fix FS volume creation with backing stores.
|
||||||
|
@ -1660,8 +1660,14 @@ virDomainHostdevSubsysUsbDefParseXML(virConnectPtr conn,
|
|||||||
int flags ATTRIBUTE_UNUSED) {
|
int flags ATTRIBUTE_UNUSED) {
|
||||||
|
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
int got_product, got_vendor;
|
||||||
xmlNodePtr cur;
|
xmlNodePtr cur;
|
||||||
|
|
||||||
|
/* Product can validly be 0, so we need some extra help to determine
|
||||||
|
* if it is uninitialized*/
|
||||||
|
got_product = 0;
|
||||||
|
got_vendor = 0;
|
||||||
|
|
||||||
cur = node->children;
|
cur = node->children;
|
||||||
while (cur != NULL) {
|
while (cur != NULL) {
|
||||||
if (cur->type == XML_ELEMENT_NODE) {
|
if (cur->type == XML_ELEMENT_NODE) {
|
||||||
@ -1669,6 +1675,7 @@ virDomainHostdevSubsysUsbDefParseXML(virConnectPtr conn,
|
|||||||
char *vendor = virXMLPropString(cur, "id");
|
char *vendor = virXMLPropString(cur, "id");
|
||||||
|
|
||||||
if (vendor) {
|
if (vendor) {
|
||||||
|
got_vendor = 1;
|
||||||
if (virStrToLong_ui(vendor, NULL, 0,
|
if (virStrToLong_ui(vendor, NULL, 0,
|
||||||
&def->source.subsys.u.usb.vendor) < 0) {
|
&def->source.subsys.u.usb.vendor) < 0) {
|
||||||
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
@ -1686,6 +1693,7 @@ virDomainHostdevSubsysUsbDefParseXML(virConnectPtr conn,
|
|||||||
char* product = virXMLPropString(cur, "id");
|
char* product = virXMLPropString(cur, "id");
|
||||||
|
|
||||||
if (product) {
|
if (product) {
|
||||||
|
got_product = 1;
|
||||||
if (virStrToLong_ui(product, NULL, 0,
|
if (virStrToLong_ui(product, NULL, 0,
|
||||||
&def->source.subsys.u.usb.product) < 0) {
|
&def->source.subsys.u.usb.product) < 0) {
|
||||||
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
@ -1745,14 +1753,18 @@ virDomainHostdevSubsysUsbDefParseXML(virConnectPtr conn,
|
|||||||
cur = cur->next;
|
cur = cur->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (def->source.subsys.u.usb.vendor == 0 &&
|
if (got_vendor && def->source.subsys.u.usb.vendor == 0) {
|
||||||
def->source.subsys.u.usb.product != 0) {
|
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
"%s", _("vendor cannot be 0."));
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!got_vendor && got_product) {
|
||||||
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
"%s", _("missing vendor"));
|
"%s", _("missing vendor"));
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (def->source.subsys.u.usb.vendor != 0 &&
|
if (got_vendor && !got_product) {
|
||||||
def->source.subsys.u.usb.product == 0) {
|
|
||||||
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
|
||||||
"%s", _("missing product"));
|
"%s", _("missing product"));
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -1 +1 @@
|
|||||||
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb -usbdevice host:0204:6025
|
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor pty -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb -usbdevice host:0204:6025 -usbdevice host:1234:0000
|
||||||
|
@ -24,5 +24,11 @@
|
|||||||
<product id='0x6025'/>
|
<product id='0x6025'/>
|
||||||
</source>
|
</source>
|
||||||
</hostdev>
|
</hostdev>
|
||||||
|
<hostdev mode='subsystem' type='usb' managed='no'>
|
||||||
|
<source>
|
||||||
|
<vendor id='0x1234'/>
|
||||||
|
<product id='0x0000'/>
|
||||||
|
</source>
|
||||||
|
</hostdev>
|
||||||
</devices>
|
</devices>
|
||||||
</domain>
|
</domain>
|
||||||
|
Loading…
Reference in New Issue
Block a user