Re: include/linux/bug.h:93:12: error: dereferencing pointer to incomplete type

From: Josh Triplett
Date: Mon Feb 29 2016 - 16:24:40 EST


On Mon, Feb 29, 2016 at 12:49:37PM -0800, Andrew Morton wrote:
> On Mon, 29 Feb 2016 07:33:04 +0800 kbuild test robot <fengguang.wu@xxxxxxxxx> wrote:
>
> > FYI, the error/warning still remains.
> >
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head: fc77dbd34c5c99bce46d40a2491937c3bcbd10af
> > commit: 5d2acfc7b974bbd3858b4dd3f2cdc6362dd8843a kconfig: make allnoconfig disable options behind EMBEDDED and EXPERT
> > date: 1 year, 11 months ago
> > config: mn10300-allnoconfig (attached as .config)
> > reproduce:
> > wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
> > chmod +x ~/bin/make.cross
> > git checkout 5d2acfc7b974bbd3858b4dd3f2cdc6362dd8843a
> > # save the attached .config to linux build tree
> > make.cross ARCH=mn10300
> >
>
> From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Subject: mn10300, c6x: CONFIG_GENERIC_BUG must depend on CONFIG_BUG
>
> CONFIG_BUG=n && CONFIG_GENERIC_BUG=y make no sense and things break:
>
> In file included from include/linux/page-flags.h:9:0,
> from kernel/bounds.c:9:
> include/linux/bug.h:91:47: warning: 'struct bug_entry' declared inside parameter list
> static inline int is_warning_bug(const struct bug_entry *bug)
> ^
> include/linux/bug.h:91:47: warning: its scope is only this definition or declaration, which is probably not what you want
> include/linux/bug.h: In function 'is_warning_bug':
> >> include/linux/bug.h:93:12: error: dereferencing pointer to incomplete type
> return bug->flags & BUGFLAG_WARNING;
>
> Reported-by: kbuild test robot <fengguang.wu@xxxxxxxxx>
> Cc: Josh Triplett <josh@xxxxxxxxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>

This looks like the right patch; I thought it had already been
submitted.

That said, what would it take to move GENERIC_BUG and BUG into
architecture-independent configuration, including such a dependency?

> arch/c6x/Kconfig | 1 +
> arch/mn10300/Kconfig | 1 +
> 2 files changed, 2 insertions(+)
>
> diff -puN arch/c6x/Kconfig~mn10300-c6x-config_generic_bug-must-depend-on-config_bug arch/c6x/Kconfig
> --- a/arch/c6x/Kconfig~mn10300-c6x-config_generic_bug-must-depend-on-config_bug
> +++ a/arch/c6x/Kconfig
> @@ -36,6 +36,7 @@ config GENERIC_HWEIGHT
>
> config GENERIC_BUG
> def_bool y
> + depends on BUG
>
> config C6X_BIG_KERNEL
> bool "Build a big kernel"
> diff -puN arch/mn10300/Kconfig~mn10300-c6x-config_generic_bug-must-depend-on-config_bug arch/mn10300/Kconfig
> --- a/arch/mn10300/Kconfig~mn10300-c6x-config_generic_bug-must-depend-on-config_bug
> +++ a/arch/mn10300/Kconfig
> @@ -53,6 +53,7 @@ config GENERIC_HWEIGHT
>
> config GENERIC_BUG
> def_bool y
> + depends on BUG
>
> config QUICKLIST
> def_bool y
> _
>