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

Ingo Molnar
2009-03-24T09:54:19Z

* Pekka Enberg <penberg@cs.helsinki.fi> wrote:

> On Tue, 2009-03-24 at 10:31 +0100, Ingo Molnar wrote:
> > * Pekka Enberg <penberg@cs.helsinki.fi> wrote:
> >
> > > On Tue, 2009-03-24 at 10:17 +0100, Ingo Molnar wrote:
> > > > > OK, I think all of them are now fixed. I haven't yet been able to
> > > > > complete a build so help is still appreciated. ;-)
> > > >
> > > > unless there's a mail delay, we still have:
> > > >
> > > > lib/decompress_unlzma.c:122: error: implicit declaration of function ‘kfree’
> > > > lib/decompress_unlzma.c:551: error: implicit declaration of function ‘kmalloc’
> > >
> > > Sorry, I missed that. I was testing the .config you sent in the
> > > initial mail, not allyesconfig. I sent you a patch to fix that as
> > > well now.
> >
> > no problem, i missed it too - computer reminded us that it's still
> > there ;-)
> >
> > there's a new headers-export-check failure:
> >
> > /home/mingo/tip/usr/include/linux/bsg.h:11: found __[us]{8,16,32,64} type without #include <linux/types.h>
> > /home/mingo/tip/usr/include/linux/fs.h:11: included file 'linux/gfp.h' is not exported
> > make[3]: *** [/home/mingo/tip/usr/include/linux/.check] Error 1
> > make[2]: *** [linux] Error 2
> >
> > (CONFIG_HEADERS_CHECK)
>
> Hmm, I wonder what is the best way to fix this, though. I think we
> better use macros there (like rest of linux/fs.h) does because of
> dependency issues. What do you think?
>
> Pekka
>
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index add95da..4dda05d 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -8,7 +8,6 @@
>
> #include <linux/limits.h>
> #include <linux/ioctl.h>
> -#include <linux/gfp.h>
>
> /*
> * It's silly to have NR_OPEN bigger than NR_FILE, but you can change
> @@ -2233,15 +2232,8 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf,
>
>
> #ifdef CONFIG_SECURITY
> -static inline char *alloc_secdata(void)
> -{
> - return (char *)get_zeroed_page(GFP_KERNEL);
> -}
> -
> -static inline void free_secdata(void *secdata)
> -{
> - free_page((unsigned long)secdata);
> -}
> +#define alloc_secdata() (char *)get_zeroed_page(GFP_KERNEL)
> +#define free_secdata() free_page((unsigned long) secdata)

yep, that would be fine - but please add a comment about why they
are macros and what would have to be done to fix it.

(the real fix would be to separate fs.h into fs_types.h and
fs_apis.h - like we did it with spinlock.h. Similarly with slab.h.)

Ingo