Re: [PATCH v2 1/6] powerpc/xive: remove dead NULL check after GFP_NOFAIL allocation

Gou Hao <[email protected]> Mon, 27 Jul 2026 11:11:44 +0800
Newsgroups org.kernel.vger.linux-rdma,org.kernel.vger.linux-kernel,org.kvack.linux-mm,org.ozlabs.lists.linuxppc-dev
Message-ID <AEAA5D0F00F603DD+457fbbba-bb97-42f8-afbd-3dd9c2dacd6e@uniontech.com>
On 7/27/26 01:04, Cédric Le Goater wrote:
> As suggested by Andrew, let's change the approach and remove entirely
> __GFP_NOFAIL instead and make all xive_ipis access paths NULL-safe.

Yes, that's better.

> On 7/24/26 04:28, Gou Hao wrote:
>> kzalloc_objs with the __GFP_NOFAIL flag will never return NULL, so the
>> subsequent NULL check is unreachable dead code. Remove it.
>>
>> Signed-off-by: Gou Hao <[email protected]>
>> Reviewed-by: Wentao Guan <[email protected]>
>> Reviewed-by: jiazhenyuan <[email protected]>
>> ---
>>   arch/powerpc/sysdev/xive/common.c | 5 +----
>>   1 file changed, 1 insertion(+), 4 deletions(-)
>>
>> diff --git a/arch/powerpc/sysdev/xive/common.c b/arch/powerpc/sysdev/ 
>> xive/common.c
>> index dadd1f46ec939..f2904a5c2b7bf 100644
>> --- a/arch/powerpc/sysdev/xive/common.c
>> +++ b/arch/powerpc/sysdev/xive/common.c
>> @@ -1134,9 +1134,6 @@ static int __init xive_init_ipis(void)
>>       xive_ipis = kzalloc_objs(*xive_ipis, nr_node_ids,
>>                    GFP_KERNEL | __GFP_NOFAIL);
> 
> So let's remove __GFP_NOFAIL here.
> 
>> -    if (!xive_ipis)
>> -        goto out_free_domain;
>> -
> 
> Let's keep it now that allocation can really fail.
> 
>>       for_each_node(node) {>           struct xive_ipi_desc *xid = 
>> &xive_ipis[node];
>>           struct xive_ipi_alloc_info info = { node };
>> @@ -1158,7 +1155,7 @@ static int __init xive_init_ipis(void)
>>   out_free_xive_ipis:
>>       kfree(xive_ipis);
>> -out_free_domain:
> 
> and keep the out_free_domain label
> 
>> +    xive_ipis = NULL;
> 
> and yes we should add 'xive_ipis = NULL;'
> 
>>       irq_domain_remove(ipi_domain);
>>   out_free_fwnode:
>>       irq_domain_free_fwnode(fwnode);
> 
> 
> The prepare_cpu() path is broken. To fix, we need to check xive_ipis
> is not NULL in xive_setup_cpu_ipi() and xive_cleanup_cpu_ipi(). It
> should be a straight forward local change. Nothing complex.
> 
> You can test with QEMU. The pSeries and the PowerNV machines are well
> supported under emulation. Ping me if you need help.
> 
Thank you for the review. I will fix these issues in the next version of 
the patch, and test locally.

-- 
Thanks,
Gou Hao