Suggested fix ...
$ diff src/qemu/qemu_hostdev.c src/qemu/qemu_hostdev-modified.c 597,599c597,613 < usbDevice *usb < = usbFindDevice(hostdev->source.subsys.u.usb.vendor, < hostdev->source.subsys.u.usb.product); --- > if (hostdev->source.subsys.u.usb.bus) { > usbDevice *usb > = usbGetDevice(hostdev->source.subsys.u.usb.bus, > hostdev->source.subsys.u.usb.device); > if ((hostdev->source.subsys.u.usb.vendor != usb->vendor) || > (hostdev->source.subsys.u.usb.product != usb->product)) { > qemuReportError(VIR_ERR_OPERATION_INVALID, > _("USB device %s does not match vendor product id"), > usbDeviceGetName(tmp)); > usbFreeDevice(usb); > goto cleanup; > } > } else { > usbDevice *usb > = usbFindDevice(hostdev->source.subsys.u.usb.vendor, > hostdev->source.subsys.u.usb.product); > }
Suggested fix ...
$ diff src/qemu/ qemu_hostdev. c src/qemu/ qemu_hostdev- modified. c hostdev- >source. subsys. u.usb.vendor, >source. subsys. u.usb.product) ; >source. subsys. u.usb.bus) { hostdev- >source. subsys. u.usb.bus, >source. subsys. u.usb.device) ; >source. subsys. u.usb.vendor != usb->vendor) || >source. subsys. u.usb.product != usb->product)) { (VIR_ERR_ OPERATION_ INVALID, e(tmp)) ; hostdev- >source. subsys. u.usb.vendor, >source. subsys. u.usb.product) ;
597,599c597,613
< usbDevice *usb
< = usbFindDevice(
< hostdev-
---
> if (hostdev-
> usbDevice *usb
> = usbGetDevice(
> hostdev-
> if ((hostdev-
> (hostdev-
> qemuReportError
> _("USB device %s does not match vendor product id"),
> usbDeviceGetNam
> usbFreeDevice(usb);
> goto cleanup;
> }
> } else {
> usbDevice *usb
> = usbFindDevice(
> hostdev-
> }