In g_eli_read_done() and g_eli_write_done(), for a bio with
bio_children > 1, g_destroy_bio() is never called and the bio leaks. Fix this by calling g_destroy_bio() earlier, before the check. Submitted by: Victor Balada Diaz <victor@bsdes.net> (initial version) Approved by: pjd (mentor) MFC after: 1 week
This commit is contained in:
parent
97efbf40fc
commit
90574b0a79
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=220299
@ -161,13 +161,13 @@ g_eli_read_done(struct bio *bp)
|
||||
pbp = bp->bio_parent;
|
||||
if (pbp->bio_error == 0)
|
||||
pbp->bio_error = bp->bio_error;
|
||||
g_destroy_bio(bp);
|
||||
/*
|
||||
* Do we have all sectors already?
|
||||
*/
|
||||
pbp->bio_inbed++;
|
||||
if (pbp->bio_inbed < pbp->bio_children)
|
||||
return;
|
||||
g_destroy_bio(bp);
|
||||
sc = pbp->bio_to->geom->softc;
|
||||
if (pbp->bio_error != 0) {
|
||||
G_ELI_LOGREQ(0, pbp, "%s() failed", __func__);
|
||||
@ -203,6 +203,7 @@ g_eli_write_done(struct bio *bp)
|
||||
if (bp->bio_error != 0)
|
||||
pbp->bio_error = bp->bio_error;
|
||||
}
|
||||
g_destroy_bio(bp);
|
||||
/*
|
||||
* Do we have all sectors already?
|
||||
*/
|
||||
@ -216,7 +217,6 @@ g_eli_write_done(struct bio *bp)
|
||||
pbp->bio_error);
|
||||
pbp->bio_completed = 0;
|
||||
}
|
||||
g_destroy_bio(bp);
|
||||
/*
|
||||
* Write is finished, send it up.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user