Fix USB device descriptions (bz #1138887)

remotes/origin/f20
Cole Robinson 2014-10-30 10:45:29 -04:00
parent 46a050e6ba
commit 5849970686
2 changed files with 85 additions and 1 deletions

View File

@ -0,0 +1,75 @@
From fb3f5f1b15ba389f47036417e599376d779b4c0b Mon Sep 17 00:00:00 2001
Message-Id: <fb3f5f1b15ba389f47036417e599376d779b4c0b.1414679795.git.crobinso@redhat.com>
From: Lubomir Rintel <lkundrak@v3.sk>
Date: Tue, 9 Sep 2014 14:20:43 +0200
Subject: [PATCH] node_device_udev: Try harder to get human readable
vendor:product
The manufacurer and product from USB device itself are usually not particularly
useful -- they tend to be missing, or ugly (all-uppercase, padded with spaces,
etc.). Prefer what's in the usb id database and fall back to descriptors only
if the device is too new to be in database.
https://bugzilla.redhat.com/show_bug.cgi?id=1138887
(cherry picked from commit 3ef77a544d4313cdfe257717708548f57e6db971)
---
src/node_device/node_device_udev.c | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index 785c2fa..a2f9e57 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -532,6 +532,7 @@ static int udevProcessUSBDevice(struct udev_device *device,
{
union _virNodeDevCapData *data = &def->caps->data;
int ret = -1;
+ int err;
if (udevGetUintProperty(device,
"BUSNUM",
@@ -554,10 +555,17 @@ static int udevProcessUSBDevice(struct udev_device *device,
goto out;
}
- if (udevGetStringSysfsAttr(device,
- "manufacturer",
- &data->usb_dev.vendor_name) == PROPERTY_ERROR) {
+ err = udevGetStringProperty(device,
+ "ID_VENDOR_FROM_DATABASE",
+ &data->usb_dev.vendor_name);
+ if (err == PROPERTY_ERROR)
goto out;
+ if (err == PROPERTY_MISSING) {
+ if (udevGetStringSysfsAttr(device,
+ "manufacturer",
+ &data->usb_dev.vendor_name) == PROPERTY_ERROR) {
+ goto out;
+ }
}
if (udevGetUintProperty(device,
@@ -567,10 +575,17 @@ static int udevProcessUSBDevice(struct udev_device *device,
goto out;
}
- if (udevGetStringSysfsAttr(device,
- "product",
- &data->usb_dev.product_name) == PROPERTY_ERROR) {
+ err = udevGetStringProperty(device,
+ "ID_MODEL_FROM_DATABASE",
+ &data->usb_dev.product_name);
+ if (err == PROPERTY_ERROR)
goto out;
+ if (err == PROPERTY_MISSING) {
+ if (udevGetStringSysfsAttr(device,
+ "product",
+ &data->usb_dev.product_name) == PROPERTY_ERROR) {
+ goto out;
+ }
}
if (udevGenerateDeviceName(device, def, NULL) != 0) {
--
2.1.0

View File

@ -367,7 +367,7 @@
Summary: Library providing a simple virtualization API
Name: libvirt
Version: 1.1.3.6
Release: 1%{?dist}%{?extra_release}
Release: 2%{?dist}%{?extra_release}
License: LGPLv2+
Group: Development/Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
@ -378,6 +378,9 @@ URL: http://libvirt.org/
%endif
Source: http://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.gz
# Fix USB device descriptions (bz #1138887)
Patch0001: 0001-node_device_udev-Try-harder-to-get-human-readable-ve.patch
%if %{with_libvirtd}
Requires: libvirt-daemon = %{version}-%{release}
%if %{with_network}
@ -1161,6 +1164,9 @@ of recent versions of Linux (and other OSes).
%prep
%setup -q
# Fix USB device descriptions (bz #1138887)
%patch0001 -p1
%build
%if ! %{with_xen}
%define _without_xen --without-xen
@ -2118,6 +2124,9 @@ fi
%endif
%changelog
* Thu Oct 30 2014 Cole Robinson <crobinso@redhat.com> - 1.1.3.6-2
- Fix USB device descriptions (bz #1138887)
* Mon Sep 08 2014 Cole Robinson <crobinso@redhat.com> - 1.1.3.6-1
- Rebased to version 1.1.3.6
- Fix memory leak in testDomainGenerateIfnames (bz 1135388)