Hi all, Changes since 20100824: The pci-current tree gained a build failure so I reverted 3 commits. The net tree gained a build failure so I reverted a 2 commits. The wireless tree lost a conflict. The slab tree lost its build failure. The drivers-x86 tree gained a conflict against Linus' tree. ---------------------------------------------------------------------------- I have created today's linux-next tree at git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git (patches at http://www.kernel.org/pub/linux/kernel/v2.6/next/ ). If you are tracking the linux-next tree using git, you should not use "git pull" to do so as that will try to merge the new linux-next release with the old one. You should use "git fetch" as mentioned in the FAQ on the wiki (see below). You can see which trees have been included by looking in the Next/Trees file in the source. There are also quilt-import.log and merge.log files in the Next directory. Between each merge, the tree was built with a ppc64_defconfig for powerpc and an allmodconfig for x86_64. After the final fixups (if any), it is also built with powerpc allnoconfig (32 and 64 bit), ppc44x_defconfig and allyesconfig (minus CONFIG_PROFILE_ALL_BRANCHES - this fails its final link) and i386, sparc and sparc64 defconfig. These builds also have CONFIG_ENABLE_WARN_DEPRECATED, CONFIG_ENABLE_MUST_CHECK and CONFIG_DEBUG_INFO disabled when necessary. Below is a summary of the state of the merge. We are up to 170 trees (counting Linus' and 22 trees of patches pending for Linus' tree), more are welcome (even if they are currently empty). Thanks to those who have contributed, and to those who haven't, please do. Status of my local build tests will be at http://kisskb.ellerman.id.au/linux-next . If maintainers want to give advice about cross compilers/configs that work, we are always open to add more builds. Thanks to Jan Dittmer for adding the linux-next tree to his build tests at http://l4x.org/k/ , the guys ...
2 separate slub build errors/warnings: mm/slub.c:1732: error: implicit declaration of function 'slab_pre_alloc_hook' mm/slub.c:1751: error: implicit declaration of function 'slab_post_alloc_hook' mm/slub.c:1881: error: implicit declaration of function 'slab_free_hook' mm/slub.c:1886: error: implicit declaration of function 'slab_free_hook_irq' and in different builds: mm/slub.c:1898: note: expected 'struct kmem_cache *' but argument is of type 'struct kmem_cache **' mm/slub.c:1756: note: expected 'struct kmem_cache *' but argument is of type 'struct kmem_cache **' --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** --
Empty functions are missing if the runtime debuggability option is
compiled
out.
Subject: slub: Add dummy functions for the !SLUB_DEBUG case
Provide the fall back functions to empty hooks if SLUB_DEBUG is not set.
Signed-off-by: Christoph Lameter <cl@linux.com>
---
mm/slub.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
Index: linux-2.6/mm/slub.c
===================================================================
--- linux-2.6.orig/mm/slub.c 2010-08-25 14:02:43.000000000 -0500
+++ linux-2.6/mm/slub.c 2010-08-25 14:04:23.000000000 -0500
@@ -1098,6 +1098,18 @@ static inline void inc_slabs_node(struct
int objects) {}
static inline void dec_slabs_node(struct kmem_cache *s, int node,
int objects) {}
+
+static inline int slab_pre_alloc_hook(struct kmem_cache *s, gfp_t flags)
+ { return 0; }
+
+static inline void slab_post_alloc_hook(struct kmem_cache *s, gfp_t flags,
+ void *object) {}
+
+static inline void slab_free_hook(struct kmem_cache *s, void *x) {}
+
+static inline void slab_free_hook_irq(struct kmem_cache *s,
+ void *object) {}
+
#endif
/*
--
Acked-by: Randy Dunlap <randy.dunlap@oracle.com> -- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** --
Acked-by: David Rientjes <rientjes@google.com> --
Hmmm... Any details on the configuration that got you this result? --
Certainly. config file is attached. Excerpt: CONFIG_SLUB_DEBUG=y # CONFIG_COMPAT_BRK is not set # CONFIG_SLAB is not set CONFIG_SLUB=y --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code ***
Ah. Memory hotplug....
Subject: Slub: Fix up missing kmalloc_cache -> kmem_cache_node case for memoryhotplug
Memory hotplug allocates and frees per node structures. Use the correct name.
Signed-off-by: Christoph Lameter <cl@linux.com>
---
mm/slub.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: linux-2.6/mm/slub.c
===================================================================
--- linux-2.6.orig/mm/slub.c 2010-08-25 14:48:23.000000000 -0500
+++ linux-2.6/mm/slub.c 2010-08-25 14:49:03.000000000 -0500
@@ -2909,7 +2909,7 @@ static void slab_mem_offline_callback(vo
BUG_ON(slabs_node(s, offline_node));
s->node[offline_node] = NULL;
- kmem_cache_free(kmalloc_caches, n);
+ kmem_cache_free(kmem_cache_node, n);
}
}
up_read(&slub_lock);
@@ -2942,7 +2942,7 @@ static int slab_mem_going_online_callbac
* since memory is not yet available from the node that
* is brought up.
*/
- n = kmem_cache_alloc(kmalloc_caches, GFP_KERNEL);
+ n = kmem_cache_alloc(kmem_cache_node, GFP_KERNEL);
if (!n) {
ret = -ENOMEM;
goto out;Acked-by: Randy Dunlap <randy.dunlap@oracle.com> --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** --
Acked-by: David Rientjes <rientjes@google.com>
But we also need to fixup SLUB_RESILIENCY_TEST.
slub: fix SLUB_RESILIENCY_TEST for dynamic kmalloc caches
Now that the kmalloc_caches array is dynamically allocated at boot,
SLUB_RESILIENCY_TEST needs to be fixed to pass the correct type.
Signed-off-by: David Rientjes <rientjes@google.com>
---
mm/slub.c | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/mm/slub.c b/mm/slub.c
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3486,6 +3486,8 @@ static void resiliency_test(void)
{
u8 *p;
+ BUILD_BUG_ON(KMALLOC_MIN_SIZE > 16 || SLUB_PAGE_SHIFT < 10);
+
printk(KERN_ERR "SLUB resiliency testing\n");
printk(KERN_ERR "-----------------------\n");
printk(KERN_ERR "A. Corruption after allocation\n");
@@ -3495,7 +3497,7 @@ static void resiliency_test(void)
printk(KERN_ERR "\n1. kmalloc-16: Clobber Redzone/next pointer"
" 0x12->0x%p\n\n", p + 16);
- validate_slab_cache(kmalloc_caches + 4);
+ validate_slab_cache(kmalloc_caches[4]);
/* Hmmm... The next two are dangerous */
p = kzalloc(32, GFP_KERNEL);
@@ -3505,7 +3507,7 @@ static void resiliency_test(void)
printk(KERN_ERR
"If allocated object is overwritten then not detectable\n\n");
- validate_slab_cache(kmalloc_caches + 5);
+ validate_slab_cache(kmalloc_caches[5]);
p = kzalloc(64, GFP_KERNEL);
p += 64 + (get_cycles() & 0xff) * sizeof(void *);
*p = 0x56;
@@ -3513,27 +3515,27 @@ static void resiliency_test(void)
p);
printk(KERN_ERR
"If allocated object is overwritten then not detectable\n\n");
- validate_slab_cache(kmalloc_caches + 6);
+ validate_slab_cache(kmalloc_caches[6]);
printk(KERN_ERR "\nB. Corruption after free\n");
p = kzalloc(128, GFP_KERNEL);
kfree(p);
*p = 0x78;
printk(KERN_ERR "1. kmalloc-128: Clobber first word 0x78->0x%p\n\n", p);
- validate_slab_cache(kmalloc_caches + 7);
+ validate_slab_cache(kmalloc_caches[7]);
p = kzalloc(256, GFP_KERNEL);
...Acked-by: Christoph Lameter <cl@linux.com> --
