Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 2 Apr 2011 12:17:50 +0200
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        Mikolaj Golub <trociny@freebsd.org>
Cc:        Victor Balada Diaz <victor@bsdes.net>, stable@freebsd.org, Kostik Belousov <kib@FreeBSD.org>
Subject:   Re: geli(4) memory leak
Message-ID:  <20110402101750.GD1849@garage.freebsd.pl>
In-Reply-To: <86pqp53cqe.fsf@kopusha.home.net>
References:  <20110326003348.GQ36706@equilibrium.bsdes.net> <20110401174354.GE1289@equilibrium.bsdes.net> <86pqp53cqe.fsf@kopusha.home.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--EY/WZ/HvNxOox07X
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sat, Apr 02, 2011 at 12:04:09AM +0300, Mikolaj Golub wrote:
> For me your patch look correct. But the same issue is for read :-). Also,=
 to
> avoid the leak I think we can just do g_destroy_bio() before "all sectors"
> check. See the attached patch (had some testing).

The patch looks good. Please commit.

> Index: sys/geom/eli/g_eli.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- sys/geom/eli/g_eli.c	(revision 220168)
> +++ sys/geom/eli/g_eli.c	(working copy)
> @@ -160,13 +160,13 @@ g_eli_read_done(struct bio *bp)
>  	pbp =3D bp->bio_parent;
>  	if (pbp->bio_error =3D=3D 0)
>  		pbp->bio_error =3D 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 =3D pbp->bio_to->geom->softc;
>  	if (pbp->bio_error !=3D 0) {
>  		G_ELI_LOGREQ(0, pbp, "%s() failed", __func__);
> @@ -202,6 +202,7 @@ g_eli_write_done(struct bio *bp)
>  		if (bp->bio_error !=3D 0)
>  			pbp->bio_error =3D bp->bio_error;
>  	}
> +	g_destroy_bio(bp);
>  	/*
>  	 * Do we have all sectors already?
>  	 */
> @@ -215,7 +216,6 @@ g_eli_write_done(struct bio *bp)
>  		    pbp->bio_error);
>  		pbp->bio_completed =3D 0;
>  	}
> -	g_destroy_bio(bp);
>  	/*
>  	 * Write is finished, send it up.
>  	 */

--=20
Pawel Jakub Dawidek                       http://www.wheelsystems.com
FreeBSD committer                         http://www.FreeBSD.org
Am I Evil? Yes, I Am!                     http://yomoli.com

--EY/WZ/HvNxOox07X
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (FreeBSD)

iEYEARECAAYFAk2W984ACgkQForvXbEpPzTrXQCfVJtZr2sOU63RLytIRNXjziBO
fWAAni761TsmDtlrn2O44yFQSpQv1Sjj
=oYkr
-----END PGP SIGNATURE-----

--EY/WZ/HvNxOox07X--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110402101750.GD1849>