# 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 -> 1.447.16.5 # drivers/usb/core/devices.c 1.14 -> 1.15 # drivers/usb/media/dabusb.c 1.17 -> 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(&buf, &nbytes, &skip_bytes, ppos, bus->root_hub, bus, 0, 0, 0); - if (ret < 0) + if (ret < 0) { + up(&usb_bus_list_lock); return ret; + } total_written += ret; } up (&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 (&s->mutex); } if (usb_set_interface (s->usbdev, _DABUSB_IF, 1) < 0) { + up(&s->mutex); err("set_interface failed"); return -EINVAL; }