HardenedBSD/share
Justin T. Gibbs 5b326a32ce Prevent live-lock and access of destroyed data in taskqueue_drain_all().
Phabric:	https://reviews.freebsd.org/D1247
Reviewed by:	jhb, avg
Sponsored by:	Spectra Logic Corporation

sys/kern_subr_taskqueue.c:
	Modify taskqueue_drain_all() processing to use a temporary
	"barrier task", rather than rely on a user task that may
	be destroyed during taskqueue_drain_all()'s execution.  The
	barrier task is queued behind all previously queued tasks
	and then has its priority elevated so that future tasks
	cannot pass it in the queue.

	Use a similar barrier scheme to drain threads processing
	current tasks.  This requires taskqueue_run_locked() to
	insert and remove the taskqueue_busy object for the running
	thread for every task processed.

share/man/man9/taskqueue.9:
	Remove warning about live-lock issues with taskqueue_drain_all()
	and indicate that it does not wait for tasks queued after
	it begins processing.
2015-01-04 19:55:44 +00:00
..
colldef
dict
doc
dtrace
examples
i18n
info
keys
man Prevent live-lock and access of destroyed data in taskqueue_drain_all(). 2015-01-04 19:55:44 +00:00
me
misc
mk Remove MK_INFO guards in bsd.info.mk per r276556 2015-01-02 22:55:30 +00:00
mklocale
monetdef
msgdef
numericdef
security
sendmail
skel
snmp
syscons
tabset
termcap
tests
timedef
vt
zoneinfo
Makefile
Makefile.inc