block: fix intermittent dm timeout based oops
authorHannes Reinecke <hare@suse.de>
Thu, 23 Apr 2009 08:32:59 +0000 (10:32 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Fri, 24 Apr 2009 06:54:21 +0000 (08:54 +0200)
Very rarely under stress testing of dm, oopses are occuring as
something tampers with an old stack frame.  This has been traced back
to blk_abort_queue() leaving a timeout_list pointing to the stack.
The reason is that sometimes blk_abort_request() won't delete the
timer (if the request is marked as complete but before the timer has
been removed, a small race window).  Fix this by splicing back from
the ususally empty list to the q->timeout_list.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

No differences found