1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-01-11 07:17:58 +00:00

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.

This commit is contained in:
Con Kolivas 2011-08-29 17:19:04 +10:00
parent af15955b78
commit 021b2c0d7a

38
main.c
View File

@ -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;
}