<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"># This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#	           ChangeSet	1.447.16.4 -&gt; 1.447.16.5
#	drivers/usb/core/devices.c	1.14    -&gt; 1.15   
#	drivers/usb/media/dabusb.c	1.17    -&gt; 1.18   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/06/10	bhards@bigpond.net.au	1.447.16.5
# [PATCH] USB Checker missing unlocks fixes
# 
# --------------------------------------------
#
diff -Nru a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c
--- a/drivers/usb/core/devices.c	Tue Jun 11 14:58:57 2002
+++ b/drivers/usb/core/devices.c	Tue Jun 11 14:58:57 2002
@@ -574,8 +574,10 @@
 		bus = list_entry(buslist, struct usb_bus, bus_list);
 		/* recurse through all children of the root hub */
 		ret = usb_device_dump(&amp;buf, &amp;nbytes, &amp;skip_bytes, ppos, bus-&gt;root_hub, bus, 0, 0, 0);
-		if (ret &lt; 0)
+		if (ret &lt; 0) {
+			up(&amp;usb_bus_list_lock);
 			return ret;
+		}
 		total_written += ret;
 	}
 	up (&amp;usb_bus_list_lock);
diff -Nru a/drivers/usb/media/dabusb.c b/drivers/usb/media/dabusb.c
--- a/drivers/usb/media/dabusb.c	Tue Jun 11 14:58:57 2002
+++ b/drivers/usb/media/dabusb.c	Tue Jun 11 14:58:57 2002
@@ -609,6 +609,7 @@
 		down (&amp;s-&gt;mutex);
 	}
 	if (usb_set_interface (s-&gt;usbdev, _DABUSB_IF, 1) &lt; 0) {
+		up(&amp;s-&gt;mutex);
 		err("set_interface failed");
 		return -EINVAL;
 	}
</pre></body></html>