Re: [PATCH] fix flags length in net 9p

From: Andrew Morton
Date: Thu May 01 2008 - 18:11:04 EST


On Thu, 01 May 2008 14:26:00 -0700
Daniel Walker <dwalker@xxxxxxxxxx> wrote:

>
> On Thu, 2008-05-01 at 14:19 -0700, Andrew Morton wrote:
> > On Thu, 1 May 2008 17:08:05 -0400 (EDT)
> > Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> >
> > > Some files in the net/9p directory uses "int" for flags. This can
> > > cause hard to find bugs on some architectures. This patch converts the
> > > flags to use "long" instead.
> >
> > gargh.
> >
> > > This bug was discovered by doing an allyesconfig make on the -rt kernel
> > > where checks are done to ensure all flags are of size sizeof(long).
> >
> > I was about to suggest that we do something like that...
> >
> > I wonder how messy it is. I long ago lost the ability to follow the
> > convolutions in include/linux/spinlock*.h :( gotta patch?
>
> The check that's in -rt for this uses BUILD_BUG_ON(), and it's extremely
> cryptic when there is a failure .. Most people will be baffled why the
> build stopped. If a check went into mainline it should at least give you
> some sort of idea what's happening ..
>

I think a warning is good enough here. There are all sorts of warnings if,
which ignored, will crash your box.

And there is only one type which we use to hold processor flags and that is
unsigned long.


So a plain old

#define must_be_ulong(p)
do {
if (&p == (unsigned long *)0)
;
} while (0)

(or whatever)

should suffice.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/