Re: [PATCH] kmemtrace: fix build breakage in befs

Ingo Molnar
2009-03-24T21:03:27Z

* Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro> wrote:

> On Tue, Mar 24, 2009 at 11:15:13AM +0200, Pekka Enberg wrote:
> > On Tue, 2009-03-24 at 10:07 +0100, Ingo Molnar wrote:
> > > * Pekka Enberg <penberg@cs.helsinki.fi> wrote:
> > >
> > > > On Tue, 2009-03-24 at 09:56 +0100, Ingo Molnar wrote:
> > > > > * Pekka Enberg <penberg@cs.helsinki.fi> wrote:
> > > > >
> > > > > > On Tue, 2009-03-24 at 09:51 +0100, Ingo Molnar wrote:
> > > > > > > there's another build problem as well, in squashfs, and in key.h:
> > > > > > >
> > > > > > > include/linux/key.h:128: error: field 'sem' has incomplete type
> > > > > > > fs/squashfs/export.c:133: error: implicit declaration of function 'kmalloc'
> > > > > > > fs/squashfs/export.c:143: error: implicit declaration of function 'kfree'
> > > > > > >
> > > > > > > And i suspect there's more as well. Is there really no unintrusive
> > > > > > > way to solve this - or do you think the RCU change reduces the
> > > > > > > include file spaghetti?
> > > > > >
> > > > > > I don't think there is and yes, I do think the RCU change cleans
> > > > > > up things as well.
> > > > >
> > > > > Okay. Note, you'll have to test tip:tracing/kmemtrace explicitly as
> > > > > i had to exclude it from tip:master due to test failures. Will put
> > > > > it back in once fixes arrive :)
> > > >
> > > > That's what I am testing right now. It's just that I am working on
> > > > an old laptop where building the kernel takes a looong time....
> > > > :-)
> > >
> > > ok - let me help then.
> > >
> > > On (64-bit) allyesconfig there's 5 distinct build failures:
> > >
> > > include/linux/key.h:128: error: field ???sem??? has incomplete type
> > > distcc[22541] ERROR: compile security/keys/sysctl.c on a/16 failed
> > >
> > > lib/decompress_bunzip2.c:636: error: implicit declaration of function ???kmalloc???
> > > lib/decompress_bunzip2.c:726: error: implicit declaration of function ???kfree???
> > >
> > > In file included from include/keys/user-type.h:16,
> > > from fs/cifs/cifs_spnego.c:25:
> > > include/linux/key.h:128: error: field ???sem??? has incomplete type
> > > distcc[3226] ERROR: compile fs/cifs/cifs_spnego.c on ph/16 failed
> > >
> > > lib/decompress_inflate.c:45: error: implicit declaration of function ???kmalloc???
> > > lib/decompress_inflate.c:154: error: implicit declaration of function ???kfree???
> > >
> > > lib/decompress_unlzma.c:122: error: implicit declaration of function ???kfree???
> > > lib/decompress_unlzma.c:551: error: implicit declaration of function ???kmalloc???
> > >
> > > You should be able to reproduce them (on 32-bit too) one by one via:
> > >
> > > make lib/decompress_unlzma.o
> > >
> > > etc. - without having to redo the full allyesconfig. (i'll redo that
> > > after the fixes, to flush out remaining/dependent bugs)
> >
> > OK, I think all of them are now fixed. I haven't yet been able to
> > complete a build so help is still appreciated. ;-)
> >
> > Pekka
>
> Gosh, what have I done?! oO
>
> As far as I can see (or I hope so), it isn't really my fault the
> original authors didn't use headers in a semantically-consistent
> way.

yeah.

> Pekka, thanks a lot for helping with this.

indeed. Now we need to repeat this for most other large headers we
have in include/linux/*.h. Going by 'ls -lS include/linux/*.h' would
be a good start. It gives:

-rw-rw-r-- 1 mingo mingo 111235 2009-03-24 20:19 include/linux/security.h

Oh. We just grew security.h. Go figure :-/

Ingo