Re: [PATCH v2 4/6] debugobjects: Don't start fill if there are remaining nodes locally

From: Leizhen (ThunderTown)
Date: Mon Sep 09 2024 - 07:05:17 EST




On 2024/9/9 17:22, Thomas Gleixner wrote:
> On Thu, Sep 05 2024 at 11:45, Leizhen wrote:
>> On 2024/9/5 11:11, Leizhen (ThunderTown) wrote:
>> Seems to need to add an additional patch as follows to be foolproof.
>> I'll prepare it.
>>
>> diff --git a/lib/debugobjects.c b/lib/debugobjects.c
>> index e175cc74f7b7899..d3f8cc7dc1c9291 100644
>> --- a/lib/debugobjects.c
>> +++ b/lib/debugobjects.c
>> @@ -245,6 +245,21 @@ alloc_object(void *addr, struct debug_bucket *b, const struct debug_obj_descr *d
>>
>> raw_spin_lock(&pool_lock);
>> obj = __alloc_object(&obj_pool);
>> + if (!obj) {
>> + raw_spin_unlock(&pool_lock);
>> + obj = kmem_cache_zalloc(obj_cache, __GFP_HIGH | GFP_NOWAIT);
>> + if (!obj)
>> + return NULL;
>> +
>> + raw_spin_lock(&pool_lock);
>> + debug_objects_allocated++;
>> +
>> + /*
>> + * It can be understood that obj is allocated immediately after
>> + * being added to obj_pool.
>> + */
>> + obj_pool_used++;
>> + }
>> if (obj) {
>> int cnt = 0;
>
> No. That fails on RT. See debug_object_fill_pool().

OK, I got it, thanks.

>
> Thanks,
>
> tglx
> .
>

--
Regards,
Zhen Lei