mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Eric Engestrom <eric.engestrom@imgtec.com>
Cc: <linux-kernel@vger.kernel.org>, Joe Perches <joe@perches.com>,
	Hannes Frederic Sowa <hannes@stressinduktion.org>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	"David S. Miller" <davem@davemloft.net>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Andrey Ryabinin <aryabinin@virtuozzo.com>
Subject: Re: [RFC] Add missing #include <linux/bug.h>
Date: Mon, 25 Apr 2016 11:36:41 -0700	[thread overview]
Message-ID: <20160425113641.b4c880fada716f8a31ada6b9@linux-foundation.org> (raw)
In-Reply-To: <1461607856-27790-1-git-send-email-eric.engestrom@imgtec.com>

On Mon, 25 Apr 2016 19:10:55 +0100 Eric Engestrom <eric.engestrom@imgtec.com> wrote:

> ARRAY_SIZE uses BUILD_BUG_ON_ZERO, which is undefined is you don't
> include linux/bug.h first, which just happened to me.
> 
> Is there any reason this include isn't here? A quick grep found 595
> other files using a define from bug.h without ever including it.

yeah.  A lot of the kernel compiles by accident ;) We just fix stuff
when it blows up - it ain't pretty but this process works acceptably
well.

> --- a/include/linux/compiler-gcc.h
> +++ b/include/linux/compiler-gcc.h
> @@ -2,6 +2,8 @@
>  #error "Please don't include <linux/compiler-gcc.h> directly, include <linux/compiler.h> instead."
>  #endif
>  
> +#include <linux/bug.h>
> +
>  /*
>   * Common definitions for all gcc versions go here.
>   */

hm, it Seems Wrong to include bug.h into compiler.h - the latter is
such a low-level infrastructury thing.  As evidenced by the fact that
bug.h explicitly includes compiler.h!

The bottom line is that our headers are just too large and complex and
try to do too much stuff.  Going finer-grained is always a good fix,
but I don't think you want to be adding a new array_size.h!

I guess we could move __must_be_array() into kernel.h and use #ifdef
__GNUC__ (or whatever).  But that adds to kernel.h (another) dependency
on bug.h, which kernel.h doesn't (and probably shouldn't and possibly
can't) include.  Sucks.

      reply	other threads:[~2016-04-25 18:36 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-25 18:10 Eric Engestrom
2016-04-25 18:36 ` Andrew Morton [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160425113641.b4c880fada716f8a31ada6b9@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=aryabinin@virtuozzo.com \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=eric.engestrom@imgtec.com \
    --cc=hannes@stressinduktion.org \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®