On Thu, Nov 06, 2014 at 07:36:18PM +1100, Stephen Rothwell wrote: > Hi Andrew, > > After merging the akpm tree, today's linux-next build (sparc defconfig) > failed like this: > > mm/slab.c: In function 'slab_alloc': > mm/slab.c:3260:4: error: implicit declaration of function 'slab_free' [-Werror=implicit-function-declaration] > slab_free(cachep, objp); > ^ > mm/slab.c: At top level: > mm/slab.c:3534:29: warning: conflicting types for 'slab_free' > static __always_inline void slab_free(struct kmem_cache *cachep, void *objp) > ^ > mm/slab.c:3534:29: error: static declaration of 'slab_free' follows non-static declaration > mm/slab.c:3260:4: note: previous implicit declaration of 'slab_free' was here > slab_free(cachep, objp); > ^ > > I am not sure what caused this, but it is something in the akpm-current > or akpm trees (possibly interacting with something else). I fixed this using the attached patch. Thierry
From a9ec6cfacb892e044a5f76dce3b7fc9a3337d01a Mon Sep 17 00:00:00 2001 From: Thierry Reding <treding@xxxxxxxxxx> Date: Thu, 6 Nov 2014 11:59:23 +0100 Subject: [PATCH] mm/slab: Always predeclare slab_free() Commit 5da1c3c725ab ("slab: recharge slab pages to the allocating memory cgroup") added a predeclaration of the new slab_free() helper so that it can be used in slab_alloc_node() and slab_alloc(). However the prototype is added in an #ifdef CONFIG_NUMA protected section of code, which works fine for slab_alloc_node() but fails for slab_alloc(). Fixes the following build warnings and errors: mm/slab.c: In function 'slab_alloc': mm/slab.c:3260:4: error: implicit declaration of function 'slab_free' [-Werror=implicit-function-declaration] slab_free(cachep, objp); ^ mm/slab.c: At top level: mm/slab.c:3534:29: warning: conflicting types for 'slab_free' static __always_inline void slab_free(struct kmem_cache *cachep, void *objp) ^ mm/slab.c:3534:29: error: static declaration of 'slab_free' follows non-static declaration mm/slab.c:3260:4: note: previous implicit declaration of 'slab_free' was here slab_free(cachep, objp); ^ Reported-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> --- mm/slab.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/slab.c b/mm/slab.c index 61b01c2ae1d9..00cd028404cb 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -2961,6 +2961,8 @@ out: return objp; } +static __always_inline void slab_free(struct kmem_cache *cachep, void *objp); + #ifdef CONFIG_NUMA /* * Try allocating on another node if PFA_SPREAD_SLAB is a mempolicy is set. @@ -3133,8 +3135,6 @@ done: return obj; } -static __always_inline void slab_free(struct kmem_cache *cachep, void *objp); - static __always_inline void * slab_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid, unsigned long caller) -- 2.1.3
Attachment:
pgp8eLRnZkLmc.pgp
Description: PGP signature