[PATCH] cfq-iosched: reverse bad reference count fix
authorJens Axboe <axboe@suse.de>
Sat, 10 Sep 2005 12:17:10 +0000 (14:17 +0200)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sat, 10 Sep 2005 17:15:12 +0000 (10:15 -0700)
The reference count fix merged isn't fully bug free. It doesn't leak
now, but instead it crashes due to looking at freed memory. So for now,
lets reverse the change and I'll fix it for real next week.

Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/block/cfq-iosched.c

index 30c0903c7cddfdd46dbdd0de9c8e999c1ed7f349..cd056e7e64ec15d5cf81f16068623e29e07ad187 100644 (file)
@@ -2260,6 +2260,8 @@ static void cfq_put_cfqd(struct cfq_data *cfqd)
        if (!atomic_dec_and_test(&cfqd->ref))
                return;
 
+       blk_put_queue(q);
+
        cfq_shutdown_timer_wq(cfqd);
        q->elevator->elevator_data = NULL;
 
@@ -2316,6 +2318,7 @@ static int cfq_init_queue(request_queue_t *q, elevator_t *e)
        e->elevator_data = cfqd;
 
        cfqd->queue = q;
+       atomic_inc(&q->refcnt);
 
        cfqd->max_queued = q->nr_requests / 4;
        q->nr_batching = cfq_queued;