lkml.org 
[lkml]   [2003]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [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/

\
 
 \ /
  Last update: 2005-03-22 13:34    [W:0.036 / U:0.564 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site