diff --git a/libvirt-fix-usb-device-passthrough.patch b/libvirt-fix-usb-device-passthrough.patch
new file mode 100644
index 0000000..5882f1f
--- /dev/null
+++ b/libvirt-fix-usb-device-passthrough.patch
@@ -0,0 +1,41 @@
+From 16f20706f8d2f113bb6a49f56e415c16d438183e Mon Sep 17 00:00:00 2001
+From: Mark McLoughlin <markmc@redhat.com>
+Date: Wed, 30 Sep 2009 18:37:03 +0100
+Subject: [PATCH] Fix USB device re-labelling
+
+A simple misplaced break out of a switch results in:
+
+  libvir: error : Failed to open file '/sys/bus/pci/devices/0000:00:54c./vendor': No such file or directory
+  libvir: error : Failed to open file '/sys/bus/pci/devices/0000:00:54c./device': No such file or directory
+  libvir: error : this function is not supported by the hypervisor: Failed to read product/vendor ID for 0000:00:54c.
+
+when trying to passthrough a USB host device to qemu.
+
+* src/security_selinux.c: fix a switch/break thinko
+
+Fedora-patch: libvirt-fix-usb-device-passthrough.patch
+---
+ src/security_selinux.c |    3 +--
+ 1 files changed, 1 insertions(+), 2 deletions(-)
+
+diff --git a/src/security_selinux.c b/src/security_selinux.c
+index bc295b1..b4dc153 100644
+--- a/src/security_selinux.c
++++ b/src/security_selinux.c
+@@ -464,12 +464,11 @@ SELinuxSetSecurityHostdevLabel(virConnectPtr conn,
+ 
+             ret = usbDeviceFileIterate(conn, usb, SELinuxSetSecurityUSBLabel, vm);
+             usbFreeDevice(conn, usb);
+-
+-            break;
+         } else {
+             /* XXX deal with product/vendor better */
+             ret = 0;
+         }
++        break;
+     }
+ 
+     case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: {
+-- 
+1.6.4.4
+
diff --git a/libvirt.spec b/libvirt.spec
index 22319fb..15244fa 100644
--- a/libvirt.spec
+++ b/libvirt.spec
@@ -151,7 +151,7 @@
 Summary: Library providing a simple API virtualization
 Name: libvirt
 Version: 0.7.1
-Release: 6%{?dist}%{?extra_release}
+Release: 7%{?dist}%{?extra_release}
 License: LGPLv2+
 Group: Development/Libraries
 Source: http://libvirt.org/sources/libvirt-%{version}.tar.gz
@@ -170,6 +170,9 @@ Patch03: libvirt-fix-drv-supports-feature-bogus-error.patch
 # Fix raw save format
 Patch04: libvirt-fix-qemu-raw-format-save.patch
 
+# Fix USB device passthrough (#422683)
+Patch05: libvirt-fix-usb-device-passthrough.patch
+
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
 URL: http://libvirt.org/
 BuildRequires: python-devel
@@ -387,6 +390,7 @@ of recent versions of Linux (and other OSes).
 %patch02 -p1
 %patch03 -p1
 %patch04 -p1
+%patch05 -p1
 
 %build
 %if ! %{with_xen}
@@ -777,6 +781,9 @@ fi
 %endif
 
 %changelog
+* Wed Sep 30 2009 Mark McLoughlin <markmc@redhat.com> - 0.7.1-7
+- Fix USB device passthrough (#522683)
+
 * Mon Sep 21 2009 Chris Weyl <cweyl@alumni.drew.edu> - 0.7.1-6
 - rebuild for libssh2 1.2