1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-02-10 05:54:21 +00:00

Use only a trylock in flush queue to prevent deadlocks.

This commit is contained in:
Con Kolivas 2013-11-05 09:08:52 +11:00
parent f4cf0939a2
commit aa9938973e

View File

@ -6614,7 +6614,13 @@ static void flush_queue(struct cgpu_info *cgpu)
{ {
struct work *work = NULL; struct work *work = NULL;
wr_lock(&cgpu->qlock); if (unlikely(!cgpu))
return;
/* Use only a trylock in case we get into a deadlock with a queueing
* function holding the read lock when we're called. */
if (wr_trylock(&cgpu->qlock))
return;
work = cgpu->unqueued_work; work = cgpu->unqueued_work;
cgpu->unqueued_work = NULL; cgpu->unqueued_work = NULL;
wr_unlock(&cgpu->qlock); wr_unlock(&cgpu->qlock);