|
|
@ -2939,8 +2939,13 @@ static void roll_work(struct work *work) |
|
|
|
* prevent a copied work struct from freeing ram belonging to another struct */ |
|
|
|
* prevent a copied work struct from freeing ram belonging to another struct */ |
|
|
|
void __copy_work(struct work *work, struct work *base_work) |
|
|
|
void __copy_work(struct work *work, struct work *base_work) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
int id = work->id; |
|
|
|
|
|
|
|
|
|
|
|
clean_work(work); |
|
|
|
clean_work(work); |
|
|
|
memcpy(work, base_work, sizeof(struct work)); |
|
|
|
memcpy(work, base_work, sizeof(struct work)); |
|
|
|
|
|
|
|
/* Keep the unique new id assigned during make_work to prevent copied
|
|
|
|
|
|
|
|
* work from having the same id. */ |
|
|
|
|
|
|
|
work->id = id; |
|
|
|
if (base_work->job_id) |
|
|
|
if (base_work->job_id) |
|
|
|
work->job_id = strdup(base_work->job_id); |
|
|
|
work->job_id = strdup(base_work->job_id); |
|
|
|
if (base_work->nonce2) |
|
|
|
if (base_work->nonce2) |
|
|
|