transfer_lock should be released before usbi_handle_transfer_completion() call

Closes #430

Signed-off-by: Nathan Hjelm <hjelmn@me.com>
diff --git a/libusb/os/sunos_usb.c b/libusb/os/sunos_usb.c
index 70e1383..ecd4aad 100644
--- a/libusb/os/sunos_usb.c
+++ b/libusb/os/sunos_usb.c
@@ -1360,9 +1360,15 @@
 	}
 	usbi_dbg("Done: ctrl data bytes %d", ret);
 
-	/* sync transfer handling */
+	/**
+	 * Sync transfer handling.
+ 	 * We should release transfer lock here and later get it back
+	 * as usbi_handle_transfer_completion() takes its own transfer lock.
+	 */
+	usbi_mutex_unlock(&LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer)->lock);
 	ret = usbi_handle_transfer_completion(LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer),
 	    transfer->status);
+	usbi_mutex_lock(&LIBUSB_TRANSFER_TO_USBI_TRANSFER(transfer)->lock);
 
 	return (ret);
 }
diff --git a/libusb/version_nano.h b/libusb/version_nano.h
index d108305..13ff675 100644
--- a/libusb/version_nano.h
+++ b/libusb/version_nano.h
@@ -1 +1 @@
-#define LIBUSB_NANO 11353
+#define LIBUSB_NANO 11354