diff options
author | Boaz Harrosh <bharrosh@panasas.com> | 2009-03-24 12:35:07 +0100 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-03-26 11:01:23 +0100 |
commit | 1cd96c242a829d52f7a5ae98f554ca9775429685 (patch) | |
tree | 018d3ab9fa0d6e2bcd739483ac2693f6f71db96b /block/blk-core.c | |
parent | loop: fix circular locking in loop_clr_fd() (diff) | |
download | linux-1cd96c242a829d52f7a5ae98f554ca9775429685.tar.xz linux-1cd96c242a829d52f7a5ae98f554ca9775429685.zip |
block: WARN in __blk_put_request() for potential bio leak
Put a WARN_ON in __blk_put_request if it is about to
leak bio(s). This is a serious bug that can happen in error
handling code paths.
For this to work I have fixed a couple of places in block/ where
request->bio != NULL ownership was not honored. And a small cleanup
at sg_io() while at it.
Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/blk-core.c')
-rw-r--r-- | block/blk-core.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 7b63c9b6333d..996ed906d8ca 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -1062,6 +1062,9 @@ void __blk_put_request(struct request_queue *q, struct request *req) elv_completed_request(q, req); + /* this is a bio leak */ + WARN_ON(req->bio != NULL); + /* * Request may not have originated from ll_rw_blk. if not, * it didn't come out of our reserved rq pools |