Browse Source

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.

nfactor-troky
Con Kolivas 13 years ago
parent
commit
021b2c0d7a
  1. 38
      main.c

38
main.c

@ -3243,42 +3243,6 @@ err_out:
return false; 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) bool submit_nonce(struct thr_info *thr, struct work *work, uint32_t nonce)
{ {
work->data[64+12+0] = (nonce>>0) & 0xff; work->data[64+12+0] = (nonce>>0) & 0xff;
@ -3469,7 +3433,7 @@ static void *miner_thread(void *userdata)
if (unlikely(rc)) { if (unlikely(rc)) {
if (opt_debug) if (opt_debug)
applog(LOG_DEBUG, "CPU %d found something?", dev_from_id(thr_id)); 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); applog(LOG_ERR, "Failed to submit_work_sync in miner_thread %d", thr_id);
break; break;
} }

Loading…
Cancel
Save