Re: [PATCH 3/3 v9] kexec: Fix i386 build warnings that missed declaration of struct kimage

From: lijiang
Date: Thu Nov 14 2019 - 09:21:04 EST


å 2019å11æ14æ 20:39, Borislav Petkov åé:
> On Fri, Nov 08, 2019 at 05:00:27PM +0800, Lianbo Jiang wrote:
>> Kbuild test robot reported some build warnings as follow:
>>
>> arch/x86/include/asm/crash.h:5:32: warning: 'struct kimage' declared
>> inside parameter list will not be visible outside of this definition
>> or declaration
>> int crash_load_segments(struct kimage *image);
>> ^~~~~~
>> int crash_copy_backup_region(struct kimage *image);
>> ^~~~~~
>> int crash_setup_memmap_entries(struct kimage *image,
>> ^~~~~~
>> The 'struct kimage' is defined in the header file include/linux/kexec.h,
>> before using it, need to include its header file or make a declaration.
>> Otherwise the above warnings may be triggered.
>>
>> Add a declaration of struct kimage to the file arch/x86/include/asm/
>> crash.h, that will solve these compile warnings.
>>
>> Fixes: dd5f726076cc ("kexec: support for kexec on panic using new system call")
>
> This is, of course, wrong. Your *first* patch is introducing those
> warnings and I'm wondering how did you not see them during building?
>

I really saw my building result, but kbuild reported the following messages:

vim +5 arch/x86/include/asm/crash.h

dd5f726076cc76 Vivek Goyal 2014-08-08 4
dd5f726076cc76 Vivek Goyal 2014-08-08 @5 int crash_load_segments(struct kimage *image);
dd5f726076cc76 Vivek Goyal 2014-08-08 6 int crash_copy_backup_region(struct kimage *image);
dd5f726076cc76 Vivek Goyal 2014-08-08 7 int crash_setup_memmap_entries(struct kimage *image,
dd5f726076cc76 Vivek Goyal 2014-08-08 8 struct boot_params *params);
89f579ce99f7e0 Yi Wang 2018-11-22 9 void crash_smp_send_stop(void);
dd5f726076cc76 Vivek Goyal 2014-08-08 10

:::::: The code at line 5 was first introduced by commit
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:::::: dd5f726076cc7639d9713b334c8c133f77c6757a kexec: support for kexec on panic using new system call
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Would you mind giving me any suggestions about this?

> In file included from arch/x86/realmode/init.c:11:
> ./arch/x86/include/asm/crash.h:5:32: warning: âstruct kimageâ declared inside parameter list will not be visible outside of this definition or declaration
> 5 | int crash_load_segments(struct kimage *image);
> | ^~~~~~
> ./arch/x86/include/asm/crash.h:6:37: warning: âstruct kimageâ declared inside parameter list will not be visible outside of this definition or declaration
> 6 | int crash_copy_backup_region(struct kimage *image);
> | ^~~~~~
> ./arch/x86/include/asm/crash.h:7:39: warning: âstruct kimageâ declared inside parameter list will not be visible outside of this definition or declaration
> 7 | int crash_setup_memmap_entries(struct kimage *image,
> |
>
>
> And that happens because you've included asm/crash.h in
> arch/x86/realmode/init.c and it of course complains because it hasn't
> seen that struct yet.
>

Exactly. Last time, i fixed the warnings in my first patch, please refer to the patch v8(resend).

Link: https://lkml.kernel.org/r/20191031033517.11282-2-lijiang@xxxxxxxxxx
-[PATCH 1/2 RESEND v8] x86/kdump: always reserve the low 1M when the crashkernel option is specified


And kbuild said that need to add the reported-by, please refer to the following Link.

Link: https://lkml.kernel.org/r/201910310233.EJRtTMWP%25lkp@xxxxxxxxx

> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@xxxxxxxxx>

Any idea about this? Any suggestions will be appreciated.

Thanks.
Lianbo