diff --git a/driver-avalon.c b/driver-avalon.c index aec768eb..752c49f1 100644 --- a/driver-avalon.c +++ b/driver-avalon.c @@ -709,9 +709,11 @@ static bool avalon_detect_one(libusb_device *dev, struct usb_find_devices *found if (!add_cgpu(avalon)) goto unshin; + cgsem_init(&info->write_sem); + ret = avalon_reset(avalon, true); if (ret && !configured) - goto unshin; + goto unshinsem; update_usb_stats(avalon); @@ -735,6 +737,10 @@ static bool avalon_detect_one(libusb_device *dev, struct usb_find_devices *found return true; +unshinsem: + + cgsem_destroy(&info->write_sem); + unshin: usb_uninit(avalon); @@ -1079,7 +1085,6 @@ static bool avalon_prepare(struct thr_info *thr) mutex_init(&info->qlock); if (unlikely(pthread_cond_init(&info->qcond, NULL))) quit(1, "Failed to pthread_cond_init avalon qcond"); - cgsem_init(&info->write_sem); if (pthread_create(&info->read_thr, NULL, avalon_get_results, (void *)avalon)) quit(1, "Failed to create avalon read_thr");