[PATCH 2.4] Enable checking of reap of in-use slab

James Bottomley (James.Bottomley@SteelEye.com)
Fri, 20 Dec 2002 10:45:19 -0600


This is a multipart MIME message.

--==_Exmh_14187960620
Content-Type: text/plain; charset=us-ascii

Hi Marcelo,

On older (2.4.9) kernels, we keep running into the occasional attempts to reap
in-use slabs. The checks for this were compiled out on 2.4.10 and above in
the name of efficiency.

I'd like to add the checks just for the in use parts back just to make
assurances doubly sure that this bug is actually fixed, not just obscured.
The changes use the BUG_ON macro, so the actual debugging stuff is in the
unlikely branch which shouldn't impact the critical path too much.

Please consider applying for 2.4.22

Thanks,

James

--==_Exmh_14187960620
Content-Type: text/plain ; name="tmp.diff"; charset=us-ascii
Content-Description: tmp.diff
Content-Disposition: attachment; filename="tmp.diff"

===== mm/slab.c 1.21 vs edited =====
--- 1.21/mm/slab.c Mon Dec 16 00:22:20 2002
+++ edited/mm/slab.c Fri Dec 20 10:33:02 2002
@@ -928,10 +928,9 @@
break;

slabp = list_entry(cachep->slabs_free.prev, slab_t, list);
-#if DEBUG
- if (slabp->inuse)
- BUG();
-#endif
+
+ BUG_ON(slabp->inuse);
+
list_del(&slabp->list);

spin_unlock_irq(&cachep->spinlock);
@@ -1785,10 +1784,9 @@
p = searchp->slabs_free.next;
while (p != &searchp->slabs_free) {
slabp = list_entry(p, slab_t, list);
-#if DEBUG
- if (slabp->inuse)
- BUG();
-#endif
+
+ BUG_ON(slabp->inuse);
+
full_free++;
p = p->next;
}
@@ -1838,10 +1836,9 @@
if (p == &best_cachep->slabs_free)
break;
slabp = list_entry(p,slab_t,list);
-#if DEBUG
- if (slabp->inuse)
- BUG();
-#endif
+
+ BUG_ON(slabp->inuse);
+
list_del(&slabp->list);
STATS_INC_REAPED(best_cachep);

--==_Exmh_14187960620--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/