We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent fc2898e commit df316abCopy full SHA for df316ab
kernel/workqueue.c
@@ -1690,17 +1690,14 @@ static void __pwq_activate_work(struct pool_workqueue *pwq,
1690
static bool tryinc_node_nr_active(struct wq_node_nr_active *nna)
1691
{
1692
int max = READ_ONCE(nna->max);
1693
+ int old = atomic_read(&nna->nr);
1694
- while (true) {
1695
- int old, tmp;
1696
-
1697
- old = atomic_read(&nna->nr);
+ do {
1698
if (old >= max)
1699
return false;
1700
- tmp = atomic_cmpxchg_relaxed(&nna->nr, old, old + 1);
1701
- if (tmp == old)
1702
- return true;
1703
- }
+ } while (!atomic_try_cmpxchg_relaxed(&nna->nr, &old, old + 1));
+
+ return true;
1704
}
1705
1706
/**
0 commit comments