PERFORCE change 103118 for review

Hans Petter Selasky hselasky at FreeBSD.org
Thu Aug 3 15:01:00 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=103118

Change 103118 by hselasky at hselasky_mini_itx on 2006/08/03 15:00:54

	Allow mutex passed to usbd_do_request_flags_mtx(), to be recursed.

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#13 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#13 (text+ko) ====

@@ -1199,6 +1199,7 @@
 	struct usbd_config usbd_config[1] = { /* zero */ };
 	struct usbd_xfer *xfer = NULL;
 	u_int16_t length = UGETW(req->wLength);
+	u_int32_t level = 0;
 	usbd_status err;
 
 	usbd_config[0].type = UE_CONTROL;
@@ -1210,9 +1211,8 @@
 	usbd_config[0].callback = &usbd_default_callback;
 
 	if (mtx) {
-	    mtx_assert(mtx, MA_OWNED);
+	    level = mtx_drop_recurse(mtx);
 	    mtx_unlock(mtx);
-	    mtx_assert(mtx, MA_NOTOWNED);
 	}
 
 	/* setup transfer */
@@ -1221,6 +1221,7 @@
 
 	if (mtx) {
 	    mtx_lock(mtx);
+	    mtx_pickup_recurse(mtx, level);
 	}
 
 	if(err)


More information about the p4-projects mailing list