From fcce301c7fcfc254d8f4e67312fff944b1d15ec8 Mon Sep 17 00:00:00 2001 From: Alexander Pyhalov Date: Thu, 24 May 2018 15:06:46 +0300 Subject: transfer_lock should be released before usbi_handle_transfer_completion() call Closes #430 Signed-off-by: Nathan Hjelm --- libusb/os/sunos_usb.c | 8 +++++++- libusb/version_nano.h | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) 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 @@ solaris_submit_ctrl_on_default(struct libusb_transfer *transfer) } 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 -- cgit v1.2.1