Peter Osterlund notes oopses in the anticipatory scheduler with slab poisoning enabled due to arq->rb_node.rb_right being uninitialised. So wipe the whole thing when we allocate it. deadline seems to have the same problem. drivers/block/as-iosched.c | 1 + drivers/block/deadline-iosched.c | 1 + 2 files changed, 2 insertions(+) diff -puN drivers/block/as-iosched.c~iosched-oops-fixes drivers/block/as-iosched.c --- 25/drivers/block/as-iosched.c~iosched-oops-fixes 2003-10-19 14:17:39.000000000 -0700 +++ 25-akpm/drivers/block/as-iosched.c 2003-10-19 14:18:09.000000000 -0700 @@ -1718,6 +1718,7 @@ static int as_set_request(request_queue_ struct as_rq *arq = mempool_alloc(ad->arq_pool, gfp_mask); if (arq) { + memset(arq, 0, sizeof(*arq)); RB_CLEAR(&arq->rb_node); arq->request = rq; arq->state = AS_RQ_NEW; diff -puN drivers/block/deadline-iosched.c~iosched-oops-fixes drivers/block/deadline-iosched.c --- 25/drivers/block/deadline-iosched.c~iosched-oops-fixes 2003-10-19 14:17:39.000000000 -0700 +++ 25-akpm/drivers/block/deadline-iosched.c 2003-10-19 14:17:39.000000000 -0700 @@ -775,6 +775,7 @@ deadline_set_request(request_queue_t *q, drq = mempool_alloc(dd->drq_pool, gfp_mask); if (drq) { + memset(drq, 0, sizeof(*drq)); RB_CLEAR(&drq->rb_node); drq->request = rq; _