summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authorattilio <attilio@FreeBSD.org>2010-01-18 14:43:44 +0000
committerattilio <attilio@FreeBSD.org>2010-01-18 14:43:44 +0000
commit5fcd322a258801641a2695545efcab9501a0cd37 (patch)
tree29709102e329809b88986c1b346983ccccdbc4eb /sys/amd64
parent6cec00d040aa95e296cf0160e205596abfcc3f61 (diff)
downloadFreeBSD-src-5fcd322a258801641a2695545efcab9501a0cd37.zip
FreeBSD-src-5fcd322a258801641a2695545efcab9501a0cd37.tar.gz
MFC r200447,201703,201709-201710:
In current code, threads performing an interruptible sleep will leave the waiters flag on forcing the owner to do a wakeup even when the waiter queue is empty. That operation may lead to a deadlock in the case of doing a fake wakeup on the "preferred" queue while the other queue has real waiters on it, because nobody is going to wakeup the 2nd queue waiters and they will sleep indefinitively. A similar bug, is present, for lockmgr in the case the waiters are sleeping with LK_SLEEPFAIL on. Add a sleepqueue interface which does report the actual number of waiters on a specified queue of a waitchannel and track if at least one sleepfail waiter is present or not. In presence of this or empty "preferred" queue, wakeup both waiters queues. Discussed with: kib Tested by: Pete French <petefrench at ticketswitch dot com>, Justin Head <justin at encarnate dot com>
Diffstat (limited to 'sys/amd64')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud