Looked like this condition was previously always false ...
Not tested or anything ... 2.5.62
john
--- linux-linus/mm/slab.c 2003-02-18 00:38:40.000000000 +0000
+++ linux/mm/slab.c 2003-02-24 19:36:47.000000000 +0000
@@ -1643,7 +1643,7 @@
if (cachep->ctor && cachep->flags & SLAB_POISON) {
unsigned long ctor_flags = SLAB_CTOR_CONSTRUCTOR;
- if (!flags & __GFP_WAIT)
+ if (!(flags & __GFP_WAIT))
ctor_flags |= SLAB_CTOR_ATOMIC;
cachep->ctor(objp, cachep, ctor_flags);