git: 1ae20f7c70ea - main - kern: malloc: fix panic on M_WAITOK during THREAD_NO_SLEEPING()
John Baldwin
jhb at FreeBSD.org
Tue Mar 9 17:34:04 UTC 2021
On 3/9/21 3:17 AM, Kyle Evans wrote:
> The branch main has been updated by kevans:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=1ae20f7c70ea16fa8b702e409030e170df4f5c13
>
> commit 1ae20f7c70ea16fa8b702e409030e170df4f5c13
> Author: Kyle Evans <kevans at FreeBSD.org>
> AuthorDate: 2021-03-08 06:16:27 +0000
> Commit: Kyle Evans <kevans at FreeBSD.org>
> CommitDate: 2021-03-09 11:16:39 +0000
>
> kern: malloc: fix panic on M_WAITOK during THREAD_NO_SLEEPING()
>
> Simple condition flip; we wanted to panic here after epoch_trace_list().
>
> Reviewed by: glebius, markj
> MFC after: 3 days
> Differential Revision: https://reviews.freebsd.org/D29125
> ---
> sys/kern/kern_malloc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sys/kern/kern_malloc.c b/sys/kern/kern_malloc.c
> index 48383358e3ad..0d6f9dcfcab7 100644
> --- a/sys/kern/kern_malloc.c
> +++ b/sys/kern/kern_malloc.c
> @@ -537,7 +537,7 @@ malloc_dbg(caddr_t *vap, size_t *sizep, struct malloc_type *mtp,
> #ifdef EPOCH_TRACE
> epoch_trace_list(curthread);
> #endif
> - KASSERT(1,
> + KASSERT(0,
> ("malloc(M_WAITOK) with sleeping prohibited"));
I would perhaps just use panic() directly under INVARIANTS instead of KASSERT(false, ...)
Either that or duplicate the condition and let the compiler deal with avoiding checking
it twice, e.g.:
#ifdef EPOCH_TRACE
if (!THREAD_CAN_SLEEP())
epoc_trace_list(curthread);
#endif
KASSERT(THREAD_CAN_SLEEP(), ("malloc(M_WAITOK) with sleeping prohibited"));
--
John Baldwin
More information about the dev-commits-src-all
mailing list