From 021b2c0d7a5d6a4c8e22f0d0572f5ae8b97af2fc Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Mon, 29 Aug 2011 17:19:04 +1000 Subject: [PATCH] The cpu mining work data can get modified before we copy it if we submit it async, and the sync submission is not truly sync anyway, so just submit it sync. --- main.c | 38 +------------------------------------- 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/main.c b/main.c index 6f45dc61..6e461780 100644 --- a/main.c +++ b/main.c @@ -3243,42 +3243,6 @@ err_out: return false; } -struct swa { - struct thr_info *thr; - const struct work *work_in; -}; - -static void *swasync_thread(void *userdata) -{ - struct swa *swa = (struct swa *)userdata; - - /* Return value ignored */ - submit_work_sync(swa->thr, swa->work_in); - free(swa); - return NULL; -} - -static bool submit_work_async(struct thr_info *thr, const struct work *work_in) -{ - pthread_t sw_thread; - struct swa *swa; - - swa = malloc(sizeof(struct swa)); - if (unlikely(!swa)) { - applog(LOG_ERR, "Failed to malloc swa in submit_work_async"); - return false; - } - - swa->thr = thr; - swa->work_in = work_in; - - if (unlikely(pthread_create(&sw_thread, NULL, swasync_thread, (void *)swa))) { - applog(LOG_ERR, "Failed to create swasync_thread"); - return false; - } - return true; -} - bool submit_nonce(struct thr_info *thr, struct work *work, uint32_t nonce) { work->data[64+12+0] = (nonce>>0) & 0xff; @@ -3469,7 +3433,7 @@ static void *miner_thread(void *userdata) if (unlikely(rc)) { if (opt_debug) applog(LOG_DEBUG, "CPU %d found something?", dev_from_id(thr_id)); - if (unlikely(!submit_work_async(mythr, work))) { + if (unlikely(!submit_work_sync(mythr, work))) { applog(LOG_ERR, "Failed to submit_work_sync in miner_thread %d", thr_id); break; }