git: 1ae20f7c70ea - main - kern: malloc: fix panic on M_WAITOK during THREAD_NO_SLEEPING()

Hans Petter Selasky hps at selasky.org
Wed Mar 10 10:04:59 UTC 2021


On 3/9/21 6:33 PM, John Baldwin wrote:
> 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"));
> 

Hi,

Maybe the KASSERT() can just be a regular warning with backtrace. 
malloc() doesn't sleep unless there is no memory, would give developers 
more time to fix their bugs.

--HPS


More information about the dev-commits-src-all mailing list