Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | Date | Mon, 14 Apr 2003 12:58:33 +0200 | From | Jens Axboe <> | Subject | Re: [PATCH] 2.4.21-pre7 ide request races |
| |
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/
| ![\](/images/icornerr.gif) |