[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <4A246772.1090304@ct.jp.nec.com>
Date: Tue, 02 Jun 2009 08:42:42 +0900
From: Kiyoshi Ueda <k-ueda@...jp.nec.com>
To: Jens Axboe <jens.axboe@...cle.com>
CC: linux-kernel@...r.kernel.org,
"Jun'ichi Nomura" <j-nomura@...jp.nec.com>, k-ueda@...jp.nec.com
Subject: [PATCH block#for-2.6.31] block: fix a possible oops on elv_abort_queue()
Hi Jens,
I found one more mis-conversion to the 'request is always dequeued
when completing' model in elv_abort_queue() during code inspection.
Although I haven't hit any problem caused by this mis-conversion yet
and just done compile/boot test, please apply if you have no problem.
Request must be dequeued when it completes.
However, elv_abort_queue() completes requests without dequeueing.
This will cause oops in the __blk_end_request_all().
This patch fixes the oops.
Signed-off-by: Kiyoshi Ueda <k-ueda@...jp.nec.com>
Signed-off-by: Jun'ichi Nomura <j-nomura@...jp.nec.com>
Cc: Jens Axboe <jens.axboe@...cle.com>
---
block/elevator.c | 5 +++++
1 file changed, 5 insertions(+)
Index: linux-2.6-block/block/elevator.c
===================================================================
--- linux-2.6-block.orig/block/elevator.c
+++ linux-2.6-block/block/elevator.c
@@ -813,6 +813,11 @@ void elv_abort_queue(struct request_queu
rq = list_entry_rq(q->queue_head.next);
rq->cmd_flags |= REQ_QUIET;
trace_block_rq_abort(q, rq);
+ /*
+ * Mark this request as started so we don't trigger
+ * any debug logic in the end I/O path.
+ */
+ blk_start_request(rq);
__blk_end_request_all(rq, -EIO);
}
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists