Subject: Re: linux-next: build failure after merge of the driver-core tree

From: Peter Zijlstra <[email-masked]>
Date: Wed, 14 Dec 2011 10:24:57 +0100

On Wed, 2011-12-14 at 15:48 +1100, Stephen Rothwell wrote:
> Hi Greg,
> 
> After merging the driver-core tree, today's linux-next build
> (powerpc_ppc64_defconfig) failed like this:
> 
> In file included from include/linux/slab.h:185:0,
>                  from include/linux/kref.h:19,
>                  from include/linux/kobject.h:24,
>                  from include/linux/sysdev.h:24,
>                  from include/linux/node.h:17,
>                  from include/linux/swap.h:10,
>                  from include/linux/suspend.h:4,
>                  from arch/powerpc/kernel/asm-offsets.c:24:
> include/linux/slub_def.h:100:17: error: field 'kobj' has incomplete type
> 
> Caused by commit 4af679cd7cbb ("kref: Inline all functions") ... we now
> have kref.h -> slab.h -> slub_def.h -> kobject.h -> kref.h when
> CONFIG_SLUB is set.

Egads, that's nasty.. 

The nicest thing I can come up with is something like the below, but its
not all that nice at all :/

---
--- a/include/linux/kref.h
+++ b/include/linux/kref.h
@@ -16,7 +16,8 @@
 #define _KREF_H_
 
 #include <linux/types.h>
-#include <linux/slab.h>
+
+extern void kfree(const void *);
 
 struct kref {
 	atomic_t refcount;