Re: [PATCH] 2.4.21-pre7 ide request races

From: Jens Axboe (axboe@suse.de)
Date: Mon Apr 14 2003 - 05:58:33 EST


On Mon, Apr 14 2003, Jens Axboe wrote:
> On Mon, Apr 14 2003, Andrew Morton wrote:
> > Jens Axboe <axboe@suse.de> wrote:
> > >
> > > How would that solve the problem? The request could be gone even before
> > > end_that_request_last() is run, that is the issue.
> >
> > In that case I didn't understand your description of the bug even the tiniest
> > little bit.
> >
> > That request is sitting in the kernel stack of some process which is sleeping
> > in wait_for_completion(). Hence it is safe memory until someone runs
> > complete() against the completion struct.
>
> Sorry you are right, that should fix the problem as well! Your fix is
> probably the better one for 2.4, less intrusive. I'll kill the stack
> requests in 2.5 then.

Marcelo,

Please apply this simpler variant. Thanks!

--- /opt/kernel/linux-2.4.21-pre7/drivers/block/ll_rw_blk.c 2003-04-14 10:48:21.000000000 +0200
+++ drivers/block/ll_rw_blk.c 2003-04-14 12:53:03.000000000 +0200
@@ -1375,11 +1403,12 @@
 
 void end_that_request_last(struct request *req)
 {
- if (req->waiting != NULL)
- complete(req->waiting);
- req_finished_io(req);
+ struct completion *waiting = req->waiting;
 
+ req_finished_io(req);
         blkdev_release_request(req);
+ if (waiting)
+ complete(waiting);
 }
 
 int __init blk_dev_init(void)

-- 
Jens Axboe

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Apr 15 2003 - 22:00:30 EST