+++ /dev/null
-From: Miklos Szeredi <mszeredi@suse.cz>
-Subject: Fix use of uninitialized variable in cache_grow()
-Patch-mainline: no
-References: bnc#444597
-
-This fixes a bug in SoN-08-reserve-slub.patch.
-
-If cache_grow() was called with objp != NULL then the 'reserve' local
-variable wasn't initialized. This resulted in ac->reserve being set to
-a rubbish value. Due to this in some circumstances huge amounts of
-slab pages were allocated (due to slab_force_alloc() returning true),
-which caused atomic page allocation failures and slowdown of the
-system.
-
-Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
----
- mm/slab.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-Index: linux-2.6.27/mm/slab.c
-===================================================================
---- linux-2.6.27.orig/mm/slab.c 2008-12-03 22:11:12.000000000 +0100
-+++ linux-2.6.27/mm/slab.c 2008-12-03 22:14:37.000000000 +0100
-@@ -2785,7 +2785,7 @@ static int cache_grow(struct kmem_cache
- size_t offset;
- gfp_t local_flags;
- struct kmem_list3 *l3;
-- int reserve;
-+ int reserve = -1;
-
- /*
- * Be lazy and only check for valid flags here, keeping it out of the
-@@ -2841,7 +2841,8 @@ static int cache_grow(struct kmem_cache
- if (local_flags & __GFP_WAIT)
- local_irq_disable();
- check_irq_off();
-- slab_set_reserve(cachep, reserve);
-+ if (reserve != -1)
-+ slab_set_reserve(cachep, reserve);
- spin_lock(&l3->list_lock);
-
- /* Make slab active. */