From e9cfdad810eaaa60c94877631187c80a030a897b Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Tue, 21 Oct 2003 18:23:26 -0700 Subject: [PATCH] [PATCH] io scheduler oops fixes 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 --git a/drivers/block/as-iosched.c b/drivers/block/as-iosched.c index 532b32f353e8..47a7c2b09809 100644 --- a/drivers/block/as-iosched.c +++ b/drivers/block/as-iosched.c @@ -1718,6 +1718,7 @@ static int as_set_request(request_queue_t *q, struct request *rq, int gfp_mask) 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 --git a/drivers/block/deadline-iosched.c b/drivers/block/deadline-iosched.c index 1c8ca884396f..317e7db70489 100644 --- a/drivers/block/deadline-iosched.c +++ b/drivers/block/deadline-iosched.c @@ -765,6 +765,7 @@ deadline_set_request(request_queue_t *q, struct request *rq, int gfp_mask) drq = mempool_alloc(dd->drq_pool, gfp_mask); if (drq) { + memset(drq, 0, sizeof(*drq)); RB_CLEAR(&drq->rb_node); drq->request = rq; -- 2.39.5