Re: [PATCH] 2.4.21-pre7 ide request races

Jens Axboe (axboe@suse.de)
Mon, 14 Apr 2003 12:58:33 +0200


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/