Re: [PATCH] powerpc/kexec: Simplify kdump_extra_elfcorehdr_size()

"Christophe Leroy (CS GROUP)" <[email protected]> Fri, 31 Jul 2026 09:07:47 +0200
Newsgroups org.ozlabs.lists.linuxppc-dev,org.kernel.vger.linux-kernel
Message-ID <[email protected]>

Le 30/07/2026 à 16:45, Thorsten Blum a écrit :
> On Thu, Jul 30, 2026 at 04:33:18PM +0200, Christophe Leroy (CS GROUP) wrote:
>> Le 30/07/2026 à 15:19, Thorsten Blum a écrit :
>>> Return the size directly and drop the extra_sz variable to simplify
>>> kdump_extra_elfcorehdr_size(). The two warning paths now fall through
>>> to the existing return 0 at the end of the function.
>>>
>>> Signed-off-by: Thorsten Blum <[email protected]>
>>> ---
>>>    arch/powerpc/kexec/file_load_64.c | 6 +-----
>>>    1 file changed, 1 insertion(+), 5 deletions(-)
>>>
>>> diff --git a/arch/powerpc/kexec/file_load_64.c b/arch/powerpc/kexec/file_load_64.c
>>> index c3503d698428..d0c544079e03 100644
>>> --- a/arch/powerpc/kexec/file_load_64.c
>>> +++ b/arch/powerpc/kexec/file_load_64.c
>>> @@ -377,16 +377,12 @@ static int load_backup_segment(struct kimage *image, struct kexec_buf *kbuf)
>>>    static unsigned int kdump_extra_elfcorehdr_size(struct crash_mem *cmem)
>>>    {
>>>    #if defined(CONFIG_CRASH_HOTPLUG) && defined(CONFIG_MEMORY_HOTPLUG)
>>> -	unsigned int extra_sz = 0;
>>> -
>>>    	if (CONFIG_CRASH_MAX_MEMORY_RANGES > (unsigned int)PN_XNUM)
>>>    		pr_warn("Number of Phdrs %u exceeds max\n", CONFIG_CRASH_MAX_MEMORY_RANGES);
>>>    	else if (cmem->nr_ranges >= CONFIG_CRASH_MAX_MEMORY_RANGES)
>>>    		pr_warn("Configured crash mem ranges may not be enough\n");
>>>    	else
>>> -		extra_sz = (CONFIG_CRASH_MAX_MEMORY_RANGES - cmem->nr_ranges) * sizeof(Elf64_Phdr);
>>> -
>>> -	return extra_sz;
>>> +		return (CONFIG_CRASH_MAX_MEMORY_RANGES - cmem->nr_ranges) * sizeof(Elf64_Phdr);
>>
>> I don't understand.
>>
>> Previously, when cmem->nr_ranges >= CONFIG_CRASH_MAX_MEMORY_RANGES you would
>> return 0. Now you will return something different. For instance if
>> cmem->nr_ranges is (CONFIG_CRASH_MAX_MEMORY_RANGES + 1) you will return
>> (unsigned int)(-1 * sizeof(Elf64_Phdr))
> 
> It still returns 0.
> 
> When cmem->nr_ranges >= CONFIG_CRASH_MAX_MEMORY_RANGES, the else if
> branch prints the warning and then falls through to the return 0 at the
> end of the function. The final else branch is not entered in that case.

Hum ... Yes sorry I missed that.

Reviewed-by: Christophe Leroy (CS GROUP) <[email protected]>


> 
> No functional changes are intended.
> 
>>>    #endif
>>>    	return 0;
>>>    }
>>