jtl f2aa140123 Consistently enforce the restriction against calling malloc/free when in a
critical section.

uma_zalloc_arg()/uma_zalloc_free() may acquire a sleepable lock on the
zone. The malloc() family of functions may call uma_zalloc_arg() or
uma_zalloc_free().

The malloc(9) man page currently claims that free() will never sleep.
It also implies that the malloc() family of functions will not sleep
when called with M_NOWAIT. However, it is more correct to say that
these functions will not sleep indefinitely. Indeed, they may acquire
a sleepable lock. However, a developer may overlook this restriction
because the WITNESS check that catches attempts to call the malloc()
family of functions within a critical section is inconsistenly
applied.

This change clarifies the language of the malloc(9) man page to clarify
the restriction against calling the malloc() family of functions
while in a critical section or holding a spin lock. It also adds
KASSERTs at appropriate points to make the enforcement of this
restriction more consistent.

PR:		204633
Differential Revision:	https://reviews.freebsd.org/D4197
Reviewed by:	markj
Approved by:	gnn (mentor)
Sponsored by:	Juniper Networks
2015-11-19 14:04:53 +00:00
..
2015-08-28 20:06:58 +00:00
2015-07-20 09:37:42 +00:00
2015-04-22 14:38:58 +00:00
2015-01-22 11:12:42 +00:00
2015-06-30 17:00:45 +00:00
2014-06-26 13:57:44 +00:00
2015-11-19 05:50:22 +00:00
2014-08-11 15:06:07 +00:00
2015-01-22 11:12:42 +00:00
2015-06-10 10:48:12 +00:00
2015-07-29 17:18:27 +00:00
2015-07-11 15:22:11 +00:00
2015-07-11 15:22:11 +00:00
2015-06-10 10:48:12 +00:00
2015-03-17 14:16:50 +00:00
2015-08-01 07:21:14 +00:00