Browse Source

Discard work that is stale in the get_queued() function, returning NULL instead.

Con Kolivas 12 years ago
parent
commit
f36b3ad010
1 changed files with 6 additions and 0 deletions
  1. 6 0
      miner.c

+ 6 - 0
miner.c

@@ -9110,9 +9110,15 @@ struct work *get_queued(struct cgpu_info *cgpu)
 	wr_lock(&cgpu->qlock);
 	wr_lock(&cgpu->qlock);
 	if (cgpu->unqueued_work) {
 	if (cgpu->unqueued_work) {
 		work = cgpu->unqueued_work;
 		work = cgpu->unqueued_work;
+		if (unlikely(stale_work(work, false))) {
+			discard_work(work);
+			work = NULL;
+			goto out_unlock;
+		}
 		__add_queued(cgpu, work);
 		__add_queued(cgpu, work);
 		cgpu->unqueued_work = NULL;
 		cgpu->unqueued_work = NULL;
 	}
 	}
+out_unlock:
 	wr_unlock(&cgpu->qlock);
 	wr_unlock(&cgpu->qlock);
 
 
 	return work;
 	return work;